通过 FileWriter 写入特定行 Java

Write in specific row via FileWriter Java

我有一些数据要写入。 代码:

private void saveStats(int early, int infected, int recovered, int deads, int notInfected, int vaccinated, int iteration){
    try
    {
        FileWriter txt = new FileWriter("statistic.csv");

        txt.write((String.valueOf(early)));
        txt.write(";");
        txt.write(String.valueOf(infected));
        txt.write(";");
        txt.write((String.valueOf(recovered)));
        txt.write(";");
        txt.write((String.valueOf(deads)));
        txt.write(";");
        txt.write((String.valueOf(notInfected)));
        txt.write(";");
        txt.write((String.valueOf(vaccinated)));
        txt.write("\n");
        txt.close();

    } catch (IOException ex)
    {
        ex.printStackTrace();
        System.out.println("Error!");
    }
}

我会用这个函数来保存迭代次数和一些额外的数据;例如:

迭代感染恢复死亡未感染疫苗接种

1 200 300 400 500

2 300 400 600 900

等等

一个完美的解决方案是让文件的第一行保存每一列的名称,类似于上面写的。

对于这样的事情,最好使用现有的 Java CSV 库。一种可能性是Apache Commons CSV。 “Google 是你的朋友”如果你想找到教程或其他替代品。

但是如果您想“编写自己的”代码,有多种方法可以做到。更改代码以在 CSV 中记录多行的最简单方法是更改​​

  new FileWriter("statistic.csv");

  new FileWriter("statistic.csv", true);

以“附加”模式打开文件,新行将添加到文件末尾,而不是替换现有行。

您还应该使用 Java 7+ 尝试使用资源 来管理 FileWriter。这将确保 FileWriter 始终正确关闭。

如果您想使用 CSV headers、更高效的文件处理等,您需要自己编写 CSVWriter class。但如果你这样做,你最好使用已经有人设计、编写和测试过的库。 (见上文!)