2011-09-22 26 views
10

File.mkdir()またはFile.mkdirs()のいずれかをJavaで呼び出すと、falseが返されますが、なぜディレクトリが作成されなかったのかを知る方法はありますか?File.mkdirs()が失敗した理由の発見

+2

私はいつも 'mkdir()'がそれが(私にとってはこれまで問題ではなかった)ように設計されたのか疑問に思ってきました。 – NPE

+1

'delete()'と同じですが、真偽値を返します。 'SecurityException'でなければ、何かが失敗した理由は示されません。 –

答えて

4

実際にはありません。 SecurityExceptionがスローされない場合は、パスのタイプミスが原因である可能性が最も高くなります。つまり、誤って無効な新しいディレクトリへの親パスを指定したことになります。

私はあなたがそれはあなたがSecurityExceptionの祖先をキャッチしているのでSecurityExceptionあなたは、ないスローされている気付いていないtry { ... } catch (Exception e)ブロック、に包まれているとしないのですか?

すべてのことが正しいと思われ、それでも失敗する場合は、ループを繰り返して3回繰り返すことができます。それでもやはり失敗し、アプリケーションによっては、UIレベルで何らかの警告を発するか、エラーをログファイルに記録することができます(書き込み可能な場合)。

I/Oの問題が深刻化しているため、ユーザーに障害を通知するだけでなく、アプリケーションレベルで行うことができることはあまりありません。 I/Oに深刻な問題がある場合は、システム/ハードウェア/ OSの問題、またはサブシステムやサービスのクラッシュのような制御ができないことがあります。

...それが起こっている場合、それはあなたのアプリケーションではなく修正するIT担当者の責任です。もちろん、あなたのアプリが何とかクラッシュを引き起こしていない限り。

+2

いいえ、そうではありませんでした。私は問題を発見した(親ディレクトリにはクラスタのあるノードで間違った所有者があった)が、別のフロアに行く必要があった。ネットワーク管理者に話しかける。誰かに私にsshセッションを依頼し、 mkdir my/faulty/path'と入力します。私はそれをやってより現実的な方法を望んだ... – brandizzi

+0

まあそこに行く - IT男の問題。 :) – jefflunt

+1

ハハ、確かに:)しかし、Javaは役に立ちませんでした。 – brandizzi

関連する問題