很抱歉这个令人困惑的标题。我尽量让它尽可能简洁。我正在读取输入文件,解析它,并写入输出文件。我遇到的问题是程序运行完毕后,输出文件只包含从输入中读取的最后一项。每个输入都被下一个输入覆盖。我认为我的问题在于此代码段。
protected void processLine(String aLine) throws IOException {
Scanner scanner = new Scanner(aLine);
scanner.useDelimiter(" ");
if (scanner.hasNext()){
String input = scanner.next();
PrintWriter writer = new PrintWriter(new FileWriter("output.txt"));
writer.println(input);
writer.close();
} else {
System.out.println("Empty or invalid line. Unable to process.");
}
}
感谢任何所有帮助/建议。
答案 0 :(得分:2)
只需添加true作为参数即可以追加模式打开文件
PrintWriter writer = new PrintWriter(new FileWriter("output.txt",true));
追加模式可确保在添加新内容时保留较旧的内容。请参阅Javadoc
答案 1 :(得分:0)
您可以在追加模式下打开文件,但最好不要每次在循环周围打开和关闭输出文件。在开始之前打开它一次,并在完成时关闭它。这将更有效率。