如何使用 OpenCSV nextLine 数组

How to use the OpenCSV nextLine array

所以,我正在使用 OpenCSV 进行我正在处理的项目,到目前为止我一直做得很好,我设法读取了一个 CSV 文件,并写入了一个文件。因为这是我第一次使用 OpenCSV,所以我决定使用我在 Internet 上找到的教程,并对其进行一些调整。所以,我所做的是创建一个名为 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],看看它是否为空,如果是,则做一件事。如果不是,那么我想做一些其他的事情来使它相等。

提前致谢,我希望我已经足够清楚我要完成的工作!

此致,

约翰尼

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

您可以将 nextline 设置为该方法的局部而不是 try 并使用方法 return nextline(从 void 更改为 String[])但您只会 returning 最后一行.

你想要的(能够在读取所有数据后检查所有数据)是将你读取的每个 String[] 存储到一个列表中,并使用 return 方法。但是如果你打算这样做,你应该只使用 CSVReader (http://opencsv.sourceforge.net/apidocs/index.html) 的 readAll 方法。但请注意,如果您这样做,您在处理大文件时会有 OutOfMemoryException 的风险。

希望对您有所帮助。