FileNotFoundExceptionはファイルが存在していても発生する

Javaでプログラムしている人には常識かもしれないんですが・・・。JavaのFileNotFoundExceptionはファイルが存在している状態でも発生します。

この例外は、指定されたパス名のファイルが存在しないときに、FileInputStream、FileOutputStream、および RandomAccessFile の各コンストラクタによってスローされます。また、ファイルが存在しても、なんらかの理由でアクセスできない場合 (たとえば、読み込み専用のファイルを書き込みのために開こうとした場合) にもそれらのコンストラクタによってスローされます。

http://moyo.biz/j2se1.6/docs/ja/api/java/io/FileNotFoundException.html

ある本番環境でFileNotFoundExceptionが発生したのですが、対象ファイルを確認してみるとファイルは存在してる(´・ω・`)。よくよく調べてみるとulimitのファイル・ディスクリプタ数が1024になっておりまして、どうやらそっちが原因だったようです。

上限を1024から65536に変更したら無事解決しました。


いや、まあ、ちゃんとファイルクローズの処理が入っていないのがそもそもの問題なんですけどね、まあ応急処置ということで・・・。