在我的程序中,我有循環掃描一堆文件並讀取它們的內容。問題發生在大約1500文件迭代和似乎無法複製(或理解(由我))打開的文件錯誤太多,java.io.FileNotFoundException
問題:
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個文件的這種方法,似乎沒有問題。
你是否看到我上面粘貼的代碼會導致此問題?
您是否在兩種環境(質量保證和失敗?)中使用相同的操作系統 – SJuan76
編號生產系統是Linux,我的測試運行在MAC上 – JAM
在關閉文件之前返回數據。可能是造成這個問題。試着在finally塊後放置return。 – Romaan