Writing at the end of a file via opencsv

前端 未结 4 674
离开以前
离开以前 2020-12-20 11:58

I\'m using opencsv and want to write to a .csv file through multiple sessions. However every time I start a new CSVWriter the old file gets erased. Can I change

相关标签:
4条回答
  • 2020-12-20 12:33

    It doesn't seem possible to append to a file in opencsv (from an initial look, it looks rather simple), but if you're not restricted to opencsv you can try JExcel. To append to a file in JExcel you essentially need to create a copy then work off that, and overwrite the original. That could be similar in OpenCSV.

    Edit: It seems like your only real option is to try out JExcel or read the entire file into a list, append to it, and write that out. If this is too heavy on memory, keep the stream open, read in chunks, write out chunks, then write out your appended chunk.

    0 讨论(0)
  • 2020-12-20 12:33

    It should be possible:

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

    The CSV tool from the H2 database (disclaimer: I wrote it) also supports this.

    0 讨论(0)
  • 2020-12-20 12:45

    There's an option in the FileWriter instead of the CSVWriter to append at the end of the file.

    This code makes it work:

    mFileWriter = new FileWriter(file_path, true);
    mCsvWriter = new CSVWriter(mFileWriter);
    
    0 讨论(0)
  • 2020-12-20 12:51

    This is possible with OpenCSV, please have a look at the below example to append resultset to the existing csv file.

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

    writer.writeAll(resultSet, true);

    The second parameter to the FileWriter constructor is bool to open a file in append mode.

    FileWriter(String fileName, boolean append) 
    
    0 讨论(0)
提交回复
热议问题