【问题标题】:How to prevent overwriting output when writing to a file? [duplicate]写入文件时如何防止覆盖输出? [复制]
【发布时间】:2013-11-15 23:11:40
【问题描述】:

对不起,令人困惑的标题。我试图使其尽可能简洁。我正在读取输入文件,解析它,然后写入输出文件。我遇到的问题是程序完成运行后,输出文件仅包含从输入中读取的最后一项。每个输入都被下一个覆盖。我认为我的问题在于这段代码。

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

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

【问题讨论】:

    标签: java file-io io


    【解决方案1】:

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

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

    追加模式可确保在添加新内容时保留旧内容。参考Javadoc

    【讨论】:

    • +1。我一直想知道这是否可能,但从未真正研究过。我没有意识到在我的代码中添加,true 这么简单。
    • 使用新的javadoc
    【解决方案2】:

    您可以在附加模式下打开文件,但最好不要每次循环打开和关闭输出文件。开始前打开一次,完成后关闭。这样会更有效率。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-05
      • 2022-01-16
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 2012-11-20
      • 2015-04-09
      • 2019-07-01
      相关资源
      最近更新 更多