Ошибка Выхода массива за пределы при Чтении Csv-файла с 2 Столбцами с использованием OpenCSV

#java #csv #opencsv

Вопрос:

Я читаю CSV-файл с 2 столбцами, используя библиотеку opencsv, и хочу поместить эти 2 столбца в качестве пар ключ-значение на карте. Тем не менее, я получаю исключение индекса массива за пределами, когда в CSV есть пустая строка. Есть ли какой-нибудь способ избежать этого? Это мой код:

     Map<String, String> map = new HashMap<>();
    CSVReader csvReader;
    try (FileReader filereader = new FileReader(path)) {
        csvReader = new CSVReader(filereader);
        String[] nextRecord;
        while ((nextRecord = csvReader.readNext()) != null) {
            if (nextRecord[0] != null amp;amp; nextRecord[1] != null) {
                map.put(nextRecord[0], nextRecord[1]);
            }
        }

    } catch (Exception e) {
        System.out.print(e);
    }
 

Комментарии:

1. все записи в вашем файле не имеют запятых. Пожалуйста, вставьте содержимое вашего файла, если все в порядке. Проверьте длину массива nextRecord перед доступом nextRecord[index]

2. вы можете избежать этого, проверив, не пуста ли строка

3. попробуйте использовать readNextSilently и проверьте это nextRecord != null amp;amp; nextRecord.length > 1

4. Да, проверка длины решила проблему. Спасибо всем

Ответ №1:

массив nextRecord может быть пустым, поэтому вам нужно проверить длину, прежде чем индексировать его

менять

 if(nextRecord[0]!=null amp;amp; nextRecord[1]!=null){
     map.put(nextRecrod[0],nextRecord[1]);
}
 

Для

 if(nextRecord.length ==2 amp;amp; nextRecord[0]!=null amp;amp; nextRecord[1]!=null){
     map.put(nextRecrod[0],nextRecord[1]);
}