Apache Commons CSV:如果标头不存在,则避免IllegalArgumentException

时间:2018-09-20 12:17:12

标签: apache-commons-csv

我有一个包含3个标题A,B,C的CSV文件。在我的代码中,我使用CSVReader的get方法访问这些标题中的值。如果我使用相同的代码来处理仅包含标头A,B(而非C)的文件,是否可以通过CSVFormat避免get()IllegalArgumentException?

谢谢。

1 个答案:

答案 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");
            }
        }
    }