在我的程序中,我有一个循环扫描一堆文件并读取它们的内容。问题发生在大约 1500 个文件的迭代中,似乎无法复制(或理解(我))
问题:
java.io.FileNotFoundException: /path/to/file//myFile (Too many open files)
此方法的异常点:
private static String readFileAsRawString(File f) throws IOException {
FileInputStream stream = new FileInputStream(f); // <------------Stacktrace
try{
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
return Charset.defaultCharset().decode(bb).toString();
} finally {
stream.close();
}
}
我在 QA 中运行了这个方法超过 20,000 个文件,它似乎没有问题。
您是否发现我在上面粘贴的代码有任何问题会导致此问题?