Apache Commons CSV: предотвращение IllegalArgumentException, если заголовок не существует - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть файл CSV, который содержит 3 заголовка A, B, C. В моем коде я использую метод get CSVReader для доступа к значениям в этих заголовках.Есть ли способ, которым я могу использовать CSVFormat, чтобы избежать исключения IllegalArgumentException get (), если я использую тот же код для обработки файла только с заголовками A, B (а не C)?

Спасибо.

1 Ответ

0 голосов
/ 22 сентября 2018

Я думаю, вы можете просто использовать " Автоопределение заголовка " и читать столбец "C", только если он обнаружен как заголовок через getHeaderMap ():

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