我有我的Test.csv文件,如下所示,现在我想通过跳过空列来读取csv文件(使用JAVA)。 如果总列为空,那么我想跳过该列
111, ,John,2000, ,US
222, ,Alle,3000, ,China
333, ,Kite,4000,LCD,IND
444, ,King,5000,LED,Aust
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test {
public static void main(String[] args)
{
Scanner s = null;
try {
s = new Scanner(new File("D:/sri/Test.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while (s.hasNextLine()) {
String line = s.nextLine();
}
}
}
在这里我也可以读取空列。请你就此建议
答案 0 :(得分:1)
我建议您使用SuperCSV和CsvBeanReader,您可以自定义CellProcessor以在数据为空时忽略行。 SuperCSV document
一个简单的解决方案是使用CsvReader并逐行读取,然后在解析器之后检查每个数据。一旦你得到一个空字符串,然后移动到下一行! CSV Reader Document
答案 1 :(得分:1)
您可以使用util方法检查它是否为空字符串。
public static boolean isBlank(String str) {
int strLen;
if (str == null || (strLen = str.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if ((Character.isWhitespace(str.charAt(i)) == false)) {
return false;
}
}
return true;
}
并在您的阅读器中使用它,如下所示
Scanner s = null;
try {
s = new Scanner(new File("D:/sri/Test.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while (s.hasNextLine()) {
String[] line = s.nextLine().split(",");
for (String element : line) {
if (!isBlank(element))
System.out.println(element);
}
}