Tôi đang sử dụng opencsv và muốn ghi vào tệp .csv
qua nhiều phiên. Tuy nhiên, mỗi lần tôi bắt đầu một CSVWriter tệp cũ mới bị xóa. Tôi có thể thay đổi hành vi của CSVWriter để viết ở cuối tệp thay vì thay thế tệp không?Viết ở cuối tệp qua opencsv
Trả lời
Dường như có tùy chọn trong số FileWriter thay vì CSVWriter để thêm vào cuối tệp.
Mã này làm cho nó hoạt động:
mFileWriter = new FileWriter(file_path, true);
mCsvWriter = new CSVWriter(mFileWriter);
Có vẻ như không thể thêm vào tệp trong opencsv (từ giao diện ban đầu, có vẻ đơn giản), nhưng nếu bạn không bị giới hạn ở opencsv, bạn có thể thử JExcel. Để nối thêm vào một tệp trong JExcel, về cơ bản bạn cần phải tạo một bản sao rồi làm việc đó và ghi đè lên bản gốc. Điều đó có thể tương tự trong OpenCSV.
Chỉnh sửa: Có vẻ như tùy chọn thực sự duy nhất của bạn là dùng thử JExcel hoặc đọc toàn bộ tệp vào danh sách, nối thêm vào đó và viết ra. Nếu điều này quá nặng trên bộ nhớ, hãy giữ cho luồng mở ra, đọc thành từng phần, viết ra các đoạn, sau đó viết ra đoạn đã nối thêm của bạn.
Cần có thể:
FileWriter w = new FileWriter("yourfile.csv")
CSVWriter writer = new CSVWriter(w, '\t');
...
writer.flush();
CSVWriter writer2 = new CSVWriter(w, '\t');
...
writer2.flush();
w.close();
Các CSV tool from the H2 database (từ chối trách nhiệm: Tôi đã viết nó) cũng hỗ trợ này.