繁体   English   中英

如何防止 CSVPrinter 再次重写数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM