我有一个包含3个标题A,B,C的CSV文件。在我的代码中,我使用CSVReader的get方法访问这些标题中的值。如果我使用相同的代码来处理仅包含标头A,B(而非C)的文件,是否可以通过CSVFormat避免get()IllegalArgumentException?
谢谢。
答案 0 :(得分:0)
我认为,仅当通过getHeaderMap()将其检测为标题时,才可以使用“ Header auto detection”并读取列“ C”:
try (Reader in = new StringReader(
"A,B,C\n" +
"1,2,3\n")) {
CSVParser records = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(in);
for (CSVRecord record : records) {
System.out.println("A: " + record.get("A"));
System.out.println("B: " + record.get("B"));
System.out.println("C: " + record.get("C"));
}
}
try (Reader in = new StringReader(
"A,B\n" +
"4,5\n")) {
CSVParser records = CSVFormat.DEFAULT.withFirstRecordAsHeader().parse(in);
for (CSVRecord record : records) {
System.out.println("A: " + record.get("A"));
System.out.println("B: " + record.get("B"));
if(records.getHeaderMap().containsKey("C")) {
System.out.println("C: " + record.get("C"));
} else {
System.out.println("C not found");
}
}
}