以CSV格式验证特定列

时间:2011-08-02 04:29:10

标签: java csv

我正在验证CSV文件中的特定列,我基本上有两种方法,即

  • 方法1 我可以使用BufferedReader逐行读取CSV文件,然后停止 我点了一条线,开始了我正在寻找的东西

    try {   
         BufferedReader br = new BufferedReader(
             new InputStreamReader(item.getInputStream()));
    String strLine = "";
    StringTokenizer st = null;
    String value = "";
    while ((strLine = br.readLine()) != null) {
        st = new StringTokenizer(strLine, ",");
        while (st.hasMoreTokens()) {
            value = st.nextToken();
            if ((value != null) && (("MyString1".equals(value)
                || ("MyString2".equals(value)
                || ("MyString3".equals(value)))  {
                // Send error Message   
            }
        }
    }
    
  • 第二种方法是使用String.split,如下所示

    Scanner s = new Scanner(item.getInputStream());  
    while(s.hasNextLine()) {  
        String[] fields = s.nextLine().split("\\s*,\\s*", -1);  
        for(int i = 0;i < fields.length;i++) {  
            if(!"".equals(fields[i]) && ...  
        }  
    }  
    s.close();
    

请建议更好的方法

1 个答案:

答案 0 :(得分:1)

不要编写自己的CSV解析器。 CSV实际上比你最初想象的要复杂得多。 (示例:多行值,封装字段,转义字符等。逗号并不总是分隔字段!)

Use opencsv,这是一个功能齐全的纯Java CSV解析器。

此解析器将轻松让您循环CSV文件,并处理各个列和行。例子在上面的链接中给出。

编辑:另外,我忘了提及,它是Apache2许可的,所以它可以安全地嵌入到商业项目中!