私のプログラムでは、たくさんのファイルをスキャンしてその内容を読み取るループがあります。問題は、(()私がまたは理解)約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件以上のファイルを処理していましたが、問題はないようです。
上記の貼り付けたコードに問題があると思われますか?
両方の環境で同じOSを使用しましたか(QAと失敗しましたか) – SJuan76
いいえ生産システムはLinuxです。私のテストはMACで実行されました – JAM
ファイルを閉じる前にデータを戻してください。おそらくそれが問題の原因です。 finallyブロックの後にreturnを配置してみてください。 – Romaan