【问题标题】:Opening and Writing to file Java打开和写入文件 Java
【发布时间】:2012-10-20 02:41:09
【问题描述】:

我目前卡在我的代码中。我需要将数据写入文本文件,我正在进行排序,他们正在花费时间完成每个排序,然后将它们放入一个 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();
    }   
}

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

【问题讨论】:

  • 你得到了一行,因为你只写了一行,其内容为sort

标签: java file printing text-files


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我几乎输入了这个答案,在发布之前,看到了这个:)
    • 我也在考虑这个,但对我来说似乎有点过头了。不管它会起作用。 1+
    • @HovercraftFullOfEels - 我认为您的解决方案更好,我只是回答解释了 OP 只看到一行的原因。
    • 谢谢你,Hover 很好用。现在只需要格式化。谢谢!!!! :D ♥♥♥
    猜你喜欢
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 2013-03-04
    相关资源
    最近更新 更多