我有一个包含 5 列的 csv 文件。我想获取第二列中的值与用户输入匹配的行。
我尝试在 csv 中读取一行。使用 csv 分隔符创建一个数组,然后检查数组中的第二个值。
有没有更好的方法。
参考以下代码:
String fName = "C:\\Amit\\abc.csv";
String input="5";
String thisLine;
FileInputStream fis = new FileInputStream(fName);
DataInputStream myInput = new DataInputStream(fis);
while ((thisLine = myInput.readLine()) != null) {
String strar[] = thisLine.split(",");
if(input.equalsIgnoreCase(strar[1])){
System.out.println("Found row :"+thisLine);
}
}
CSV 格式通常使用固定的列或行位置来处理。如果不能保证固定的行和列位置,那么您可以查看处理标题以确定行的位置。
作为一般规则,使用专门构建的 CSV 解析器会简单得多,特别是如果您不控制正在使用的 CSV 文件的数据或输出格式,因为 CSV 格式有一系列潜在的极端情况(例如,数据字段中的逗号)无法正确处理String#split()
。两个经常提到的用于解析 CSV 文件的开源 Java 库是SuperCSV和OpenCSV。OpenCSV 可以处理将带有标头的 CSV 文件解析为 Java bean 对象。SuperCSV 可以处理该功能并将带有标题的 CSV 文件解析为映射。