通过 FileWriter Java 在特定行中写入

Posted

技术标签:

【中文标题】通过 FileWriter Java 在特定行中写入【英文标题】:Write in specific row via FileWriter Java 【发布时间】:2022-01-11 17:41:14 【问题描述】:

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

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

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

【问题讨论】:

请添加 CSV 文件的文本,显示您希望添加的行和列。 imgur.com/oxm4LQJ 类似的东西。第三次迭代将在第 4 行。 【参考方案1】:

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

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

  new FileWriter("statistic.csv");

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

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

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

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

【讨论】:

我下载了 Apache Commons CSV,但昨天我没有时间做任何事情。那个 append-true 正是我所需要的!谢谢!

以上是关于通过 FileWriter Java 在特定行中写入的主要内容,如果未能解决你的问题,请参考以下文章

如何避免以特定符号开头的行中字符串的文本突出显示[java]

FileWriter在Java中写入多个文件的问题

JAVA IO流相关代码(FileWriter,FileReader)

用java 编写一个程序,在命令行中以树状结构展现特定的文件夹及其子文件(夹)!

IO流概述及FileWriter类使用

第1章 IO流概述及FileWriter类使用