我使用缓冲区读取器从.csv文件中读取数据,.csv文件的某些行是空的,我想跳过这些行并从具有数据的行中读取数据。
答案 0 :(得分:1)
您可以在阅读csv文件时使用正则表达式,如此
BufferedReader reader = new BufferedReader(new FileReader(new File("csv.csv")));
String currentLine;
while((currentLine = reader.readLine()) != null){
if(currentLine.matches("(\\d+)(,\\s*\\d+)*")){
doWhateverYouWant(currentLine);
}else{
System.out.println(String.format("Invalid line: %s", currentLine));
}
}
编辑:如果您使用的是JDK8,这种方法更简单
reader.lines().filter(line -> line.matches("(\\d+)(,\\s*\\d+)*"))
输入(注意第2行和第4行之间的空白行)
1,2,3,4
1,2,3,4
1,2,3,4
显示以下输出
1,2,3,4
1,2,3,4
Invalid line:
1,2,3,4
答案 1 :(得分:0)
要忽略空白行,请添加此检查以确保该行包含以下内容:
while ((line = reader.readLine()) != null) {
if(line.length() > 0) {
//do lots of stuff to sort the data into lists etc
}
}