- ベストアンサー
File.delete()にてファイルを削除する事ができない
現在、Javaを用いてシステムの開発を行っておりますが、 1点コーディングにて解決にできず困っている問題があります。 お忙しいところ、誠に申し訳ございませんが、 ご回答のほど宜しくお願い致します。 ◎問題 普通に考えると当り前のことなのですが・・・ 実現方法を探っております。 削除対象となるファイルがオープン(別のユーザに開かれている)されている状態で、 Fileクラスのdelete()を実行してもExceptionが発生し、ファイル削除する事ができません。 不特定多数に利用される可能性があるファイルなので、 ユーザにファイルを閉じてもらうアナウンスを流すことも、現実的に考えて、難しい状況です。 ◎環境 Java:J2SDK 1.4.2_06 OS:Windows 2000 Server
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3です。 Javaでcontinueは有効のようです。http://www.atmarkit.co.jp/fjava/rensai2/javaent06/javaent06.html 3年ぶりくらいなので、忘れてしまいました(;-- がんばってください。
その他の回答 (3)
- kamkamkam3
- ベストアンサー率42% (216/514)
Exceptionがでてもcontinueかなんかで処理を続けて、deleteメソッドでファイルが削除成功するまで(Exceptionがでなくなるまで)whileループで続ければいいだけの話じゃないですか? 簡単だと思いますが。。 Javaは、ここ最近しばらくやってないのでソースを書けといわれても無理ですが。。やってできないことはないと思います。 Exceptionがでてもcatch{}の中にcontinue?を書けばそのまま処理が続けれたはずです。 簡単な概要を書くと boolean bool = false; while(!bool) { // boolがfalseの間ループ try{ bool = File.delete(hoge.txt); // 失敗したらfalseを返す } catch(IOException e) { continue; // エラーが出ても強制続行 } } ちなみにFile.deleteはbooleanを返します。ちなみに、Javaで「!」って否定をあらわしましたっけ??間違ってたらすみません。 ファイルを開いている時間がながかったら、スレッド処理にするとか・・ Javaはご無沙汰なので、何分とんちんかんなことを書いたかもしれませんが、こんな風にしたらできるんじゃないかな?と思いました。 では、がんばってください。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
サーバーのコマンドとして、 Net File コマンドからロックを解除するか Openfiles コマンドからユーザーを切断します。
ファイル削除は、OSレベルの話なのでロックされているファイルを強制的に削除するのは不可能ではないでしょうか。 例えば、ユーザーが開いているファイルを強制的に削除するとなると、そのファイルはどうなるかとかを考えると難しいような気がします。