使用java从CSV文件中搜索特定列值

时间:2011-05-16 10:55:34

标签: java csv

我想按列值进行搜索,并使用java从csv文件中检索该特定行。假设我提供“ABC123”,结果应该采用这种格式“ABC123,SW,Php”

这是csv文件格式:

Employee_Id,Designation,Domain

ABC123,SW,Php

XYZ456,SW,Java

那么如何搜索任何线索呢?谢谢。

4 个答案:

答案 0 :(得分:1)

逐行阅读文件,BufferedReader缠绕FileReader。当你找到startsWith你正在寻找的东西时停下来。关闭阅读器并返回该行。

编辑:
除非CSV文件有某种您未提及的顺序,否则您无法在此处进行任何花哨的搜索或优化。你必须阅读每一行,直到找到你想要的那一行。

答案 1 :(得分:0)

Use OpenCSV to read the CSV file,然后找到并返回您需要的值。

答案 2 :(得分:0)

/**
 * returns a string which is comma separate column values for matching row otherwise null. 
 * @param searchColumnIndex
 * @param searchString
 * @return
 * @throws IOException 
 * 
 */
public String searchCsvLine(int searchColumnIndex, String searchString) throws IOException {
    String resultRow = null;
    BufferedReader br = new BufferedReader(new FileReader("somefile.csv"));
    String line;
    while ( (line = br.readLine()) != null ) {
        String[] values = line.split(",");
        if(values[searchColumnIndex].equals(searchString)) {
            resultRow = line;
            break;
        }
    }
    br.close();
    return resultRow;
}

根据您的情况,呼叫将为String result = searchCsvLine(0, "ABC123");

答案 3 :(得分:-2)

public class Example4 {
  public static void main(String[] args) throws Exception {
    String splitBy = ",";
    BufferedReader br = new BufferedReader(new FileReader("C:\\\sample1.csv"));
    String line;
    while((line = br.readLine()) != null) {
      String[] b = line.split(splitBy);
      System.out.println(b[0]);
    }
    br.close();
  }
}