Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过opencsv在文件末尾写入_Java_Csv_Opencsv - Fatal编程技术网

Java 通过opencsv在文件末尾写入

Java 通过opencsv在文件末尾写入,java,csv,opencsv,Java,Csv,Opencsv,我正在使用并希望通过多个会话写入.csv文件。 然而,每次我启动一个新的文件,旧文件就会被删除。 我可以将的行为更改为在文件末尾写入而不是替换文件吗?似乎不可能在opencsv中附加到文件(从初始外观来看,它看起来相当简单),但如果您不限于opencsv,可以尝试。要在中附加到文件,您基本上需要创建一个副本,然后将其删除,并覆盖原始文件。这在OpenCSV中可能类似 编辑:您唯一的选择似乎是试用JExcel,或者将整个文件读入一个列表,附加到列表中,然后写出来。如果内存太大,请保持流打开,读入块

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

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

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

应该可以:

FileWriter w = new FileWriter("yourfile.csv")
CSVWriter writer = new CSVWriter(w, '\t');
...
writer.flush();
CSVWriter writer2 = new CSVWriter(w, '\t');
...
writer2.flush();
w.close();
(免责声明:我写的)也支持这一点。

中有一个选项,而不是在文件末尾附加

此代码使其工作:

mFileWriter = new FileWriter(file_path, true);
mCsvWriter = new CSVWriter(mFileWriter);

这在OpenCSV中是可能的,请查看下面的示例,将resultset附加到现有的csv文件中

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

FileWriter构造函数的第二个参数是bool,用于在追加模式下打开文件

FileWriter(String fileName, boolean append)