0

我目前被困在我的代码中。我需要将数据写入文本文件,我正在进行排序,他们正在花费时间完成每个排序,然后将它们放入一个 txt 文件中,然后我可以使用该文件来创建图表。问题是我运行程序后只得到一行。我无法保留每个结果。

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();
    }   
}

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

4

2 回答 2

3

正如HovercraftFullOfEals所提到的,您为每一行打开文件,这是一个很大的性能开销。

然而,您看到的问题是因为您没有打开文件来追加它,而是从头开始写入。要附加到文件,请使用构造函数打开它FileWriter(File,boolean)

try (PrintWriter out = new PrintWriter(new FileWriter(file, true)))
于 2012-10-20T02:46:37.803 回答
3

每次将一行结果写入文件时,您都会创建一个新的 PrintWriter 对象,从而覆盖任何先前存在的包含前一行数据的 File。为什么不在课堂上创建一次 PrintWriter,然后在将所有数据写入文件后关闭它?

于 2012-10-20T02:42:38.123 回答