【发布时间】:2018-06-18 15:01:00
【问题描述】:
我正在尝试解析文件中的代码并将其复制到具有相关修改的新创建的文件中。
但是,在新文件中出现的只是原始文件的最后一行。
如何确保将所有行都复制到新文件中,而不仅仅是最后一行?
注意:我希望每次运行此程序时都创建一个新文件,所以这个问题与传入“true”的 FileWriter 构造函数无关,如下所示
FileWriter fw = new FileWriter(newFile.txt, true);
以下是相关代码:
try (BufferedReader bufferedReader = new BufferedReader(new FileReader(args[0]));
FileWriter fileWriter = new FileWriter(myNewFile.txt)) {
while (bufferedReader.readLine() != null) {
String currentLine = bufferedReader.readLine();
fileWriter.write(currentLine);
}
myNewFile.txt 仅包含传入 BufferedReader 的文件中的最后一行文本。我不知道 FileWriter 类提供的任何附加函数。
谢谢
编辑(解决方案):
问题是由 while 循环中的 currentLine 初始化引起的。我把它改成
String currentLine;
while ((currentLine = bufferedReader.readLine()) != null) {
fileWriter.write(currentLine);
}
【问题讨论】:
-
你的起始文件有多少行?您可能更喜欢使用 Writer 继承的 append() 方法。
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建 minimal reproducible example。使用edit 链接改进您的问题 - 不要通过 cmets 添加更多信息。谢谢!
-
您没有提供所有相关的代码。例如,如果您曾经关闭()您的作家,这并不明显。除此之外:几乎每天都会出现这样的问题。您是否进行了一些研究并查看了所有解释如何使用文件编写器以及如何创建文本文件的“修改副本”的问题?
-
@GhostCat 感谢您回来。我相信您要求的所有信息都包括在内。我不会关闭作者,因为它位于资源尝试块中。感谢您的反馈,但我想我已经清楚地说明了我的问题(尽管我稍微编辑了原始问题以使其更具体)
标签: java append bufferedreader filewriter