【发布时间】:2018-10-16 08:56:35
【问题描述】:
客户向我发送键值对列表,我需要将其附加到带有标题的 CSV 文件。
lang=java lang, version, maven
version=1.8 -----> java, 1.8, true
maven=true
另一个输入可能是:
lang=C# lang, version, maven
version=7.2 -----> java, 1.8, true
maven=false C#, 7.2, false
列表的数量可能有几百万,所以我需要将数据刷新到磁盘,不能全部保存在内存中。
由于键的列表是由客户端确定的,我想使用他的第一个输入来确定 CSV 文件的标题:
org.apache.commons.csv.CSVPrinter csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader(x, y, z ...)));
从那时起,只附加相关列的值:
csvPrinter.printRecord(xValue, yValue, zValue.....)
然而,它是一个顽皮的客户端,有时他会发送我从未见过的新密钥:
lang=java
meetMeAt=London
version=1.4
maven=false
此时我如何向 CSV 添加另一个标题?
首先将所有列表保存到一个csv文件没有标题,将所有标题累积在程序内存中,然后创建另一个包含所有标题的文件并将第一个记录复制到其中文件?合理吗?
【问题讨论】:
标签: java csv apache-commons