我目前在我的代码中遇到了一个问题。我需要将数据写入文本文件,我要进行排序,他们花费时间来完成每个排序,然后将它们放入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();
}
}
这是我到目前为止写的文件方法。任何帮助将不胜感激!
答案 0 :(得分:3)
每次向文件写入一行结果时,您都会创建一个新的PrintWriter对象,从而覆盖任何以前存在的包含前一行数据的文件。为什么不在课堂上创建一次PrintWriter,然后在将所有数据写入文件后关闭它?
答案 1 :(得分:3)
如上所述 HovercraftFullOfEals ,您打开每行的文件,这是一个很大的性能开销。
然而,您看到的问题是因为您没有打开文件以附加到它,而是从头开始写入它。要附加到文件,请使用构造函数FileWriter(File,boolean)
打开它:
try (PrintWriter out = new PrintWriter(new FileWriter(file, true)))