opencsvを使用していて、.csv
複数のセッションを介してファイルに書き込みたい。ただし、新しいCSVWriterを起動するたびに、古いファイルが消去されます。CSVWriterの動作を変更して、ファイルを置き換える代わりにファイルの最後に書き込むことはできますか?
4 に答える
CSVWriterの代わりにFileWriterに、ファイルの最後に追加するオプションがあります。
このコードはそれを機能させます:
mFileWriter = new FileWriter(file_path, true);
mCsvWriter = new CSVWriter(mFileWriter);
これはOpenCSVで可能です。以下の例を見て、既存のcsvファイルに結果セットを追加してください。
CSVWriter writer = new CSVWriter(new FileWriter(fileName.concat(".csv"), true), ',');
writer.writeAll(resultSet、true);
FileWriterコンストラクターの2番目のパラメーターは、ファイルを追加モードで開くためのブール値です。
FileWriter(String fileName, boolean append)
opencsvのファイルに追加することはできないようです(最初の外観からはかなり単純に見えます)が、opencsvに制限されていない場合は、JExcelを試すことができます。JExcelでファイルに追加するには、基本的にコピーを作成してからそれを処理し、元のファイルを上書きする必要があります。これは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();
H2データベースのCSVツール(免責事項:私が作成しました)もこれをサポートしています。