У меня есть CSV-файл, как это: -
a,b,c,d //<- header
0.1,0.123,2.13,3.22
0.3,0.213,2.11,3.12
0.5,0.231,2.3,3.21
0.7,0.121,2.26,3.321
Я использую Apache Commons CSV для чтения файла CSV.
Я сделал POJO, который соответствует вышеупомянутому CSV-файлу, и это
с именем класса CSVInputFileModel.
Ниже приведен метод, который я использую для чтения файла: -
private List<CSVInputFileModel> inputCSVData;
void fileParser() throws IOException {
Reader in = new FileReader(INPUT_CSV_FILE);
Iterable<CSVRecord> records = CSVFormat.RFC4180.withFirstRecordAsHeader().parse(in);
for (CSVRecord record : records) {
// Adding each record to array list
CSVInputFileModel csvInputFileModel = new CSVInputFileModel();
csvInputFileModel.setA(Double.parseDouble(record.get("a")));
csvInputFileModel.setB(Double.parseDouble(record.get("b")));
csvInputFileModel.setC(Double.parseDouble(record.get("c")));
csvInputFileModel.setD(Double.parseDouble(record.get("d")));
inputCSVData.add(csvInputFileModel); //<-- NPE at second iteration
}
System.out.println(inputCSVData);
}
Ниже приведен класс CSVInputFileModel
public class CSVInputFileModel {
private double a;
private double b;
private double c;
private double d;
public CSVInputFileModel() {
}
//All args constructor
//hashcode equals
//getter setters
//toString
}
Следующий код дает исключение нулевого указателя .
Когда я запустил отладчик, я обнаружил, что в первой итерации apache csv commons может прочитать первую запись файла CSV, тогда как это вторая итерация, которая дает исключение нулевого указателя.
Я не могу понять, что я сделал неправильно!