以下のコードは、フォルダーからすべてのファイルを読み取るだけです。このフォルダには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]));