无法通过Apache Commons CSV读取超过记录的内容

我有这样的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文件。


我已经制作了与上述csv文件相对应的POJO,并将其命名为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文件的第一条记录,而第二次迭代则给出了空指针异常。


我无法弄清楚我做错了什么!


料青山看我应如是
浏览 173回答 2
2回答

HUWWW

首先,我确定您正在成功读取第一条记录,但是不可能将其添加到列表中,因此:您正在使用Enhaced for循环,这意味着第二条记录在那里,这不是您的问题。在CSVInputFileModel似乎是正确的。您声明了inputCSVData,但未实例化。我的结论是您错过了输入列表实例,这就是为什么要输入第一个迭代,但绝不要输入第二个迭代的原因。解决这个问题,然后inputCSVData = new ArrayList<CSVInputFileModel>()再尝试在代码中添加元素以对其进行修复。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java