gpt4 book ai didi

java - 如何使用 Apache Common CSV CSVPrinter 附加新行?

转载 作者:行者123 更新时间:2023-11-30 05:39:06 24 4
gpt4 key购买 nike

我有这个类,其中包含使用 Apache Common CSV 库 1.5 生成 CSV 文件的方法

public class CSVGenerator {

private static final String CSV_FILE = "./credentials.csv";
private static CSVPrinter csvPrinter;

public static void generateCSV(String FirstName, String LastName, String DOB) {


try {
BufferedWriter writer = Files.newBufferedWriter(Paths.get(CSV_FILE) );

csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT
.withHeader("FirstName", "LastName", "DOB"));

csvPrinter.printRecord(FirstName, LastName, DOB);
csvPrinter.flush();

} catch (IOException e) {
e.printStackTrace();
}
}
}

我的主类中有一个方法,该方法将调用方法 generateCSV() 几次。
如何写入新行并将其附加到现有 CSV 文件?使用我当前的实现,它将继续覆盖我的第一行。

更直接的解决方案是收集任何 Java 集合(数组或列表)中的所有数据,然后在最后迭代该集合并将其一次性写入 CSV。但我不会走那条路。我更喜欢将一行写入 CSV ,执行其他操作,然后再次调用该方法以写入新行并将其附加到现有的 CSV 中。

谢谢。

最佳答案

使用APPEND选项:

BufferedWriter writer = Files.newBufferedWriter(
Paths.get(CSV_FILE),
StandardOpenOption.APPEND,
StandardOpenOption.CREATE);

您必须进行设置,以使以下其中一个成立:

  1. 开始之前,请确保输出文件为空或不存在; 或者
  2. 仅在第二次及后续调用 generateCSV 时使用 APPEND 选项

顺便说一句,您将在每次调用 generateCSV 时创建一个新的 BufferedWriterCSVPrinter,并且不会关闭其中任何一个。这是浪费的,您可能应该在构造函数中创建它们,实现 Closeable,并实现 close() 方法来清理。然后将调用代码包装在实例化 generateCSV 的 try-with-resources 中。

关于java - 如何使用 Apache Common CSV CSVPrinter 附加新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56034486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com