所以,我正在使用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],看看它是否为空,如果是,则做一件事。如果不是,那么我想做一些能让它与之相等的东西。
提前致谢,我希望我对自己要完成的事情已经足够清楚了!
此致
约翰尼
答案 0 :(得分:0)
你遇到的问题是java问题而不是opencsv。问题是nextline是方法的本地方法 - 在你的情况下是try块的本地方法。所以方法之外的任何东西都不能引用nextline。
你可以使方法的nextline本地而不是try并让方法返回nextline(从void更改为String [])但你只返回最后一行。
对于你想要的东西(能够在读完之后检查所有数据)是将你读取的每个String []存储到List中并让方法返回它。但是如果你打算这样做,你应该只使用CSVReader的readAll方法(http://opencsv.sourceforge.net/apidocs/index.html)。但要注意,如果你这样做,那么在处理大文件时你会冒着OutOfMemoryException的风险。
希望有所帮助。