アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、Javaを用いてシステムの開発を行っておりますが、
1点コーディングにて解決にできず困っている問題があります。

お忙しいところ、誠に申し訳ございませんが、
ご回答のほど宜しくお願い致します。

◎問題
 普通に考えると当り前のことなのですが・・・
 実現方法を探っております。

 削除対象となるファイルがオープン(別のユーザに開かれている)されている状態で、
 Fileクラスのdelete()を実行してもExceptionが発生し、ファイル削除する事ができません。

 不特定多数に利用される可能性があるファイルなので、
 ユーザにファイルを閉じてもらうアナウンスを流すことも、現実的に考えて、難しい状況です。

◎環境
 Java:J2SDK 1.4.2_06
 OS:Windows 2000 Server

A 回答 (4件)

ファイル削除は、OSレベルの話なのでロックされているファイルを強制的に削除するのは不可能ではないでしょうか。



例えば、ユーザーが開いているファイルを強制的に削除するとなると、そのファイルはどうなるかとかを考えると難しいような気がします。
    • good
    • 0

サーバーのコマンドとして、


Net File コマンドからロックを解除するか
Openfiles コマンドからユーザーを切断します。
    • good
    • 0

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はご無沙汰なので、何分とんちんかんなことを書いたかもしれませんが、こんな風にしたらできるんじゃないかな?と思いました。

では、がんばってください。
    • good
    • 0

#3です。



Javaでcontinueは有効のようです。http://www.atmarkit.co.jp/fjava/rensai2/javaent0 …

3年ぶりくらいなので、忘れてしまいました(;--

がんばってください。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!