快速 CSV 解析Apache Commons CSV使用注意事项split opencsv

2022-09-02 11:41:27

我有一个Java服务器应用程序,可以下载CSV文件并对其进行解析。解析可能需要 5 到 45 分钟,每小时进行一次。此方法是应用的瓶颈,因此不会过早优化。到目前为止的代码:

        client.executeMethod(method);
        InputStream in = method.getResponseBodyAsStream(); // this is http stream

        String line;
        String[] record;

        reader = new BufferedReader(new InputStreamReader(in), 65536);

        try {
            // read the header line
            line = reader.readLine();
            // some code
            while ((line = reader.readLine()) != null) {
                 // more code

                 line = line.replaceAll("\"\"", "\"NULL\"");

                 // Now remove all of the quotes
                 line = line.replaceAll("\"", "");     


                 if (!line.startsWith("ERROR"){
                   //bla bla 
                    continue;
                 }

                 record = line.split(",");
                 //more error handling
                 // build the object and put it in HashMap
         }
         //exceptions handling, closing connection and reader

是否有任何现有的库可以帮助我加快速度?我可以改进现有代码吗?


答案 1

Apache Commons CSV

你看过Apache Commons CSV吗

使用注意事项split

请记住,它仅返回数据的视图,这意味着原始对象不符合垃圾回收的条件,而存在对其任何视图的引用。也许制作防御性副本会有所帮助?(Java 错误报告splitline)

它对包含逗号的转义 CSV 列进行分组也不可靠


答案 2

opencsv

看看 opencsv

这篇博客文章,opencsv是一个简单的CSV解析器,有示例用法。


推荐