Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中以高效的方式读取csv文件_Java_Performance_Csv - Fatal编程技术网

在java中以高效的方式读取csv文件

在java中以高效的方式读取csv文件,java,performance,csv,Java,Performance,Csv,我有下面的csv文件,它是逗号分隔的,现在我需要从这个文件中读取列der_id的值,我已经这样做了,但是请告诉我如何在java中以更优化的方式通过扫描器或任何比这更优化的java方法实现相同的效果 wert,der_tran,der_id,der_version,cvns_num,cvs_type AB42126325,0,694698683,0,651626843,13002 AB42126326,0,694698686,0,651626846,13001 目前我正在以这种格式阅读这篇文章

我有下面的csv文件,它是逗号分隔的,现在我需要从这个文件中读取列der_id的值,我已经这样做了,但是请告诉我如何在java中以更优化的方式通过扫描器或任何比这更优化的java方法实现相同的效果

wert,der_tran,der_id,der_version,cvns_num,cvs_type
AB42126325,0,694698683,0,651626843,13002
AB42126326,0,694698686,0,651626846,13001
目前我正在以这种格式阅读这篇文章

public class Parsingcsv {

    public static void main(String[] args)
    {
        Parsingcsv obj = new Parsingcsv();
        obj.run();
    }

    public void run()
    {
        String csvFile = "C:\\abc_2.csv";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = ",";

        try 
            {
               br = new BufferedReader(new FileReader(csvFile));
               while ((line = br.readLine()) != null) {

                // use comma as separator
                String[] id = line.split(cvsSplitBy);

                System.out.println("[der_id= " + id[2] + "]");

            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }    
        System.out.println("#####################3");
    }

}

拆分一行以提取id效率很低,请尝试以下操作

String id = line.replaceAll(".*?,.*?,(.*?),.*", "$1");

你应该使用图书馆。在

中有一些建议,请将此问题发布在《谢谢》中。您还可以简单地告知此正则表达式的作用。它说,在输入字符串中找到第三个标记(逗号分隔),并用它替换整个输入(实际返回),因此请告知如何使我的上述程序更优化。