我有下面的代码,它只是从一个文件夹中读取所有文件。此文件夹中有 20,000 个文件。该代码在本地文件夹 ( ) 上运行良好,但在读取大约 1,000 - 2,000 个文件后d:/files
在网络路径 ( ) 上失败。//robot/files
更新:文件夹是彼此的副本。
是什么导致了这个问题以及如何解决它?
package cef_debug;
import java.io.*;
public class Main {
public static void main(String[] args) throws Throwable {
String folder = args[0];
File[] files = (new File(folder)).listFiles();
String line;
for (int i = 0; i < files.length; i++) {
BufferedReader br = new BufferedReader(new FileReader(files[i]));
while ((line = br.readLine()) != null) {
}
br.close();
}
}
}
从网络路径 ( //robot/files
) 读取时出现以下错误:
Exception in thread "main" java.io.IOException: Too many open files
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileReader.<init>(FileReader.java:55)
at cef_debug.Main.main(Main.java:12)
Java Result: 1
第 12 行是以下行:
BufferedReader br = new BufferedReader(new FileReader(files[i]));