StringBuilder有时会导致行变形

时间:2018-11-19 10:32:22

标签: java csv stringbuilder

我们运行一个Java应用程序,该应用程序处理大量数据,然后将其写入CSV文件。我们注意到,大约有2%的行被弄乱了,我们也不知道为什么。

我们使用以下函数编写行:

static void writeLineToCSV(List<String> fields, Writer csvWriter) throws IOException {
    StringBuilder line = new StringBuilder();

    for (int i = 0; i < fields.size() - 1; i++) line.append(fields.get(i)).append(",");

    line.append(fields.get(fields.size() - 1)).append("\n");
    csvWriter.write(line.toString());
    csvWriter.flush();
}

哪个行的排列如下:

2018-09-21T23:00:11.555Z,1537570811000,-7900,0.57642,39,0.57585,...
2018-09-21T23:00:11.917Z,1537570811000,-7900,0.57642,39,0.57585,...
2018-09-21T23:00:14592322,0.57377,-100,0.57644,1178.59788311,0.57375,...
2018-09-21T23:00:10.041Z,1537570810000,-4691.50311435,0.576,...
2018-09-21T23:00:10.041Z,1537570810000,-4691.50311435,0.576,...

请注意,由于某种原因,第三行中的第一字段和第二字段如何进行处理,而分隔逗号却消失了。

编辑:为完成起见,CSV文件的架构为:Instant.toString(), timestamp (long), BigDecimal, ..., BigDecimal

0 个答案:

没有答案