小编Dam*_*sic的帖子

用Java读取大型CSV文件

我正在尝试用 Java读取1,000,000行 CSV 文件。我正在使用 OpenCSV 库,它在30,000行的较小文件上运行良好。不到半秒即可处理完毕。但是当我尝试读取一百万行文件时,它永远不会完成。

现在我测试了一下,看看它什么时候会真正停止,通过使用我自己的二分搜索版本,我首先尝试读取500k行,然后是250k,依此类推,我发现它很容易读取145k行,在0.5- 0.7秒,而150k甚至还没有完成。

我已经彻底搜索过,找到了我在代码中使用的几种解决方案,例如 usingBufferedReaderBufferedInputStream,但没有一个解决了这个问题。但在145-150k行之间仍然失败。

这是我的代码的相关部分(将150000 与 145000交换是导致程序在 <1 秒内执行的原因):

try {
       // BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("myFile.csv"));
        CSVReader csvReader = new CSVReader(new InputStreamReader
                (new BufferedInputStream(new FileInputStream("myFile.csv"), 8192 * 32)));
        try {
            int count = 0;
            String[] line;
            long timeStart = System.nanoTime();
            while((line = csvReader.readNext()) != null){
                count ++;
                if(count >= …
Run Code Online (Sandbox Code Playgroud)

java buffer file large-files opencsv

5
推荐指数
1
解决办法
6138
查看次数

标签 统计

buffer ×1

file ×1

java ×1

large-files ×1

opencsv ×1