我正在尝试用 Java读取1,000,000行 CSV 文件。我正在使用 OpenCSV 库,它在30,000行的较小文件上运行良好。不到半秒即可处理完毕。但是当我尝试读取一百万行文件时,它永远不会完成。
现在我测试了一下,看看它什么时候会真正停止,通过使用我自己的二分搜索版本,我首先尝试读取500k行,然后是250k,依此类推,我发现它很容易读取145k行,在0.5- 0.7秒,而150k甚至还没有完成。
我已经彻底搜索过,找到了我在代码中使用的几种解决方案,例如 usingBufferedReader等BufferedInputStream,但没有一个解决了这个问题。但在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)