15

我正在使用opencsv.csv并希望通过多个会话写入文件。但是,每次我启动一个新的CSVWriter时,旧文件都会被删除。我可以将CSVWriter的行为更改为在文件末尾写入而不是替换文件吗?

4

4 回答 4

40

FileWriter中有一个选项,而不是CSVWriter,可以附加在文件末尾。

此代码使其工作:

mFileWriter = new FileWriter(file_path, true);
mCsvWriter = new CSVWriter(mFileWriter);
于 2010-09-18T13:06:02.583 回答
2

这可以通过 OpenCSV 实现,请查看以下示例以将结果集附加到现有的 csv 文件。

CSVWriter writer = new CSVWriter(new FileWriter(fileName.concat(".csv"), true), ',');

writer.writeAll(resultSet, true);

FileWriter 构造函数的第二个参数是 bool 以附加模式打开文件。

FileWriter(String fileName, boolean append) 
于 2020-05-28T05:55:50.170 回答
1

似乎无法附加到 opencsv 中的文件(从最初的外观来看,它看起来相当简单),但如果您不限于 opencsv ,您可以尝试JExcel。要附加到JExcel中的文件,您基本上需要创建一个副本,然后处理它,并覆盖原始文件。这在 OpenCSV 中可能类似。

编辑:似乎您唯一真正的选择是尝试 JExcel 或将整个文件读入列表,附加到它,然后写出来。如果这对内存太重,请保持流打开,读入块,写出块,然后写出附加的块。

于 2010-09-18T11:48:11.280 回答
0

应该是可能的:

FileWriter w = new FileWriter("yourfile.csv")
CSVWriter writer = new CSVWriter(w, '\t');
...
writer.flush();
CSVWriter writer2 = new CSVWriter(w, '\t');
...
writer2.flush();
w.close();

H2 数据库中的CSV 工具(免责声明:我写的)也支持这一点。

于 2010-09-18T12:54:02.677 回答