FileNotFoundExceptionはファイルが存在していても発生する
Javaでプログラムしている人には常識かもしれないんですが・・・。JavaのFileNotFoundExceptionはファイルが存在している状態でも発生します。
この例外は、指定されたパス名のファイルが存在しないときに、FileInputStream、FileOutputStream、および RandomAccessFile の各コンストラクタによってスローされます。また、ファイルが存在しても、なんらかの理由でアクセスできない場合 (たとえば、読み込み専用のファイルを書き込みのために開こうとした場合) にもそれらのコンストラクタによってスローされます。
http://moyo.biz/j2se1.6/docs/ja/api/java/io/FileNotFoundException.html
ある本番環境でFileNotFoundExceptionが発生したのですが、対象ファイルを確認してみるとファイルは存在してる(´・ω・`)。よくよく調べてみるとulimitのファイル・ディスクリプタ数が1024になっておりまして、どうやらそっちが原因だったようです。
上限を1024から65536に変更したら無事解決しました。
いや、まあ、ちゃんとファイルクローズの処理が入っていないのがそもそもの問題なんですけどね、まあ応急処置ということで・・・。