2012-10-20 181 views
0

我目前卡在我的代码当场。我需要将数据写入文本文件,我已经排序完成,他们花费了每一种排序完成的时间,然后将它们放入一个txt文件中,然后我可以使用它来创建图形。问题是我运行该程序后只收到一行。我无法让它保持每个结果。打开并写入文件Java

public static void resultsToFile(String sort, double seconds, File file) 
{ 
    try (PrintWriter out = new PrintWriter(new FileWriter(file))) 
    { 
     out.write(sort + "\t"); 
     out.write(seconds + " seconds\n"); 
     out.flush(); 
     out.close(); 

    }catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 

这是我到目前为止对我写入文件的方法。任何帮助将不胜感激!

+0

你得到一条线,因为你正好写一行,其中有sort'的'内容。 – Jagger

回答

3

每当您向该文件写入一行结果时,都会创建一个新的PrintWriter对象,从而覆盖任何先前存在的保存前一行数据的文件。为什么不在课堂上创建一次PrintWriter,然后在完成将全部的数据写入文件后关闭它?

+0

哦,我想我可以尝试 – kevorski

3

作为HovercraftFullOfEals提到,你打开每一行的文件,这是一个很大的性能开销。

然而,你看到的问题是因为你不打开文件追加到它,而是从头开始写入。要追加到该文件,使用构造FileWriter(File,boolean)打开它:

try (PrintWriter out = new PrintWriter(new FileWriter(file, true))) 
+0

我差点输入了这个答案,之前发布,看到这个:) –

+0

@YogendraSingh伟大的思想;) – MadProgrammer

+0

我也想到这一点,但它对我来说似乎矫枉过正。无论它会工作。 1+ –