7

使用 Apache Commons CSV 阅读以下 TSV 片段时:

Name    DOB SIN Address, contact information
"Patience Middleton"    "18-4-87"   720463771   "varius Cras sem aliquam taciti fames hendrerit tempor"

这是我的代码:

CSVFormat format = CSVFormat.newFormat('\t').withQuote('"');
CSVParser parsed = CSVParser.parse(csvData, format);
List<CSVRecord> record = parsed.getRecords();
System.out.println(parsed.getHeaderMap().toString());

但是我总是得到一个NullPointerException说明parsed.getHeaderMap() == null

根据 API ( https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVParser.html ),该方法可能会返回在列中迭代的标题映射的副本命令。

我的代码或 CSV 文件有问题吗?图书馆失败了吗?

4

1 回答 1

17

默认情况下CSVParser假定没有标题行并将第一行解析为常规数据。withHeader()您需要明确告诉它,您希望通过调用on将 CSV 文件的第一行解释为标题CSVFormat

CSVParser parsed = CSVParser.parse(csvData, 
   CSVFormat.newFormat('\t').withQuote('"').withHeader());
于 2016-03-11T19:52:58.123 回答