2012-04-11 11 views
2

ApacheのFileUtilsのメソッドは、同期(ブロッキング)I/Oを実行しますか?ApacheのFileUtilsのメソッドは同期(ブロック)されていますか?

私はFileUtilsを呼び出しています。 copyDirectoryToDirectory。私の次の行では、私がコピーしたディレクトリを削除したいと思います。

例:

FileUtils.copyDirectoryToDirectory(source, destination); 
FileUtils.deleteDirectory(source); 

ちょうどこれは "安全" と非同期(非ブロッキング)であることを確認したいI/Oが起きていません。

ありがとうございました。

答えて

2

2つのこと:

  1. FileUtilsApache Commons IO libraryに標準JDK、そのクラスの一部ではありません。
  2. 上記の操作は、ではありません。ではノンブロッキングIOを使用しています。

あなたの質問に答えるには、はい、あなたの全体的な操作は安全です。

+0

ありがとうございます。私が尋ねた理由は、2行目が実行された後にこのエラーが発生することがあるからです。java.io.IOException:ディレクトリを削除できません。理由はまだ分かりません。 –

+0

読みます。ディレクトリを削除できません。非常に有用なメッセージではありません。私たちは、ディレクトリ内のファイルがロックされている可能性があると考えています。ファイル/ディレクトリはMac OS Xシステムに保存されています。 OSを10.4から10.6にアップグレードした後、ユーザーがシステムを使用して試して削除するときに、このエラーが発生することがあります。現時点では、ローカルシステムで問題を再現することができないため、これをデバッグする方法がわかりません。 –

+0

ファイルハンドルがまだOSレベルで開いている場合は、コピーと削除の間に若干の遅延が生じることがあります。また、他のプログラムで開かれた 'source'ディレクトリにファイルがないことを保証していますか? – Perception

関連する問題