如何在写入文件时防止覆盖输出?

时间:2013-11-15 23:11:40

标签: java file-io io

很抱歉这个令人困惑的标题。我尽量让它尽可能简洁。我正在读取输入文件,解析它,并写入输出文件。我遇到的问题是程序运行完毕后,输出文件只包含从输入中读取的最后一项。每个输入都被下一个输入覆盖。我认为我的问题在于此代码段。

 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.");
      }
   }

感谢任何所有帮助/建议。

2 个答案:

答案 0 :(得分:2)

只需添加true作为参数即可以追加模式打开文件

 PrintWriter writer = new PrintWriter(new FileWriter("output.txt",true));

追加模式可确保在添加新内容时保留较旧的内容。请参阅Javadoc

答案 1 :(得分:0)

您可以在追加模式下打开文件,但最好不要每次在循环周围打开和关闭输出文件。在开始之前打开它一次,并在完成时关闭它。这将更有效率。