#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]);
}