[英]How to prevent CSVPrinter from rewriting data again
我正在使用这种方法将数据写入 csv,但问题是它在旧数据下方再次重写数据。 我怎样才能防止它这样做? 我试图设置FileWriter writer = new FileWriter(answerFile, false);
但随后它只写入 csv 文件中的最后一个数组。
我有这个代码:
public static void writeCsv(List<String> myList) throws IOException {
FileWriter writer = new FileWriter(answerFile, true);
CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT);
List<String[]> myListSplitted = myList.stream().map(row -> row.split(",")).collect(Collectors.toList());
csvPrinter.printRecords(myListSplitted);
csvPrinter.flush();
csvPrinter.close();
}
这是我调用此方法的方法:
public static void appendAnswers() throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(questionFile))) {
String csvRow;
int counter = 0;
String[] csvArr;
String data;
br.readLine();
List<String> myList = new ArrayList<>();
while ((csvRow = br.readLine()) != null) {
csvArr = csvRow.split(",");
csvArr = Arrays.copyOf(csvArr, csvArr.length + 1);
csvArr[csvArr.length - 1] = answers.get(counter);
data = Arrays.toString(csvArr).replace("[", "").replace("]",
"").trim();
counter++;
myList = new ArrayList<String>(Arrays.asList(data.split("\n")));
}
writeCsv(myList);
}
从手册页:
Prints values in a CSV format.
Values can be appended to the output by calling the print(Object) method.
基本上, CSVPrinter
模拟打印机。 打印机将新行附加到已打印的内容上。
如果要覆盖,请更直接地使用FileWriter
而不是打印机模拟器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.