如何使用OpenCSV nextLine数组

时间:2015-10-11 15:53:38

标签: java csv opencsv

所以,我正在使用OpenCSV进行我正在进行的项目,到目前为止我一直很好,我设法读取一个CSV文件,并写入一个。因为这是我第一次使用OpenCSV,所以我决定使用我在互联网上找到的教程,并稍微调整一下。所以,我所做的是一个名为ReadData()的方法。我可以读取CSV并将其打印到控制台上,但我想要做的是访问方法之外的“nextLine”数组。

    public void ReadData(String filelocation) {
    filelocation = System.getProperty("user.dir")+"/data/"+filelocation;
    try {
        CSVReader savereader = new CSVReader(new FileReader(filelocation), ',', '"', 0);
        String[] nextLine;
            while((nextLine = savereader.readNext()) != null) {
                if(nextLine != null) {
                    //Make sure everything went through
                    System.out.println("Data Read. Results:");
                    System.out.println(Arrays.toString(nextLine));
                }
            }
    } catch (FileNotFoundException ex) {
        //Handle Exception
    } catch (IOException ex) {
        //Handle Exception
    }
}

此方法从我指定的文件中读取数据。但是,我希望能够用这些数据做事。例如,我想要使用nextLine [0],看看它是否为空,如果是,则做一件事。如果不是,那么我想做一些能让它与之相等的东西。

提前致谢,我希望我对自己要完成的事情已经足够清楚了!

此致

约翰尼

1 个答案:

答案 0 :(得分:0)

你遇到的问题是java问题而不是opencsv。问题是nextline是方法的本地方法 - 在你的情况下是try块的本地方法。所以方法之外的任何东西都不能引用nextline。

你可以使方法的nextline本地而不是try并让方法返回nextline(从void更改为String [])但你只返回最后一行。

对于你想要的东西(能够在读完之后检查所有数据)是将你读取的每个String []存储到List中并让方法返回它。但是如果你打算这样做,你应该只使用CSVReader的readAll方法(http://opencsv.sourceforge.net/apidocs/index.html)。但要注意,如果你这样做,那么在处理大文件时你会冒着OutOfMemoryException的风险。

希望有所帮助。