不是逐行写作

时间:2013-04-13 19:06:08

标签: java file append

private static void displaytoFile(int trial, int count) {
        // TODO Auto-generated method stub
        String answer;
         try{
              // Create file 
                  FileWriter fstream = new FileWriter(outputfile);
                  BufferedWriter out = new BufferedWriter(fstream);
                  answer = "Case #"+trial+": "+count;
                  out.write(answer);
                  out.newLine();
              //Close the output stream
                out.close();
              }catch (Exception e){//Catch exception if any
                  System.err.println("Error: " + e.getMessage());
              }


    }

在我的项目中循环调用displaytoFile()方法,但是我无法逐行写入文件。它只写最后一行,即上一次迭代过程中传递的参数。我在控制台中测试了其他代码没问题,它显示所有,但这段代码片段似乎有一些问题,因为它似乎覆盖了以前的值。我怎么能逐行写入文件?

3 个答案:

答案 0 :(得分:1)

使用FileWriter(String, boolean)构造函数来附加输入而不是重写整个文件:

FileWriter fstream = new FileWriter(outputfile, true);

答案 1 :(得分:0)

 FileWriter fstream = new FileWriter(outputfile);
 BufferedWriter out = new BufferedWriter(fstream);

 answer = "Case #"+trial+": "+count;
 out.write(answer);
 out.newLine();

 //Close the output stream
 out.close();

有问题。这是因为在循环的每次迭代中,清除文件然后将当前行写入其中。你应该在循环之前打开文件并在循环之后关闭它。或者确保你附加到文件,而不是先清楚然后写,就像你现在做的那样。

答案 2 :(得分:0)

您必须指明要附加到文件

请参阅方法文档here