2016-10-13 6 views
-1

以下は、私が試していたテストTimertaskクラスです。基本的には、ファイルが変更されたときにtimertaskが監視し、いくつかのメソッドを実行します。私は、timertaskが実行されている限り、 "ファイルの変更が発生するのを待っている"など、ユーザにメッセージを出力します。コマンドはどこに入力する必要がありますか?以下は私のコードです。Java - TimerTaskが実行されている間、メッセージを出力します。

ありがとうございます!

public class FileWatcherTest { 

static int count = 3; 
static int i = 0; 

public static void main(String[] args) { 

    final Timer timer = new Timer(); 
    System.out.println("Starting Timer " + timer.toString()); 

    TimerTask task = new FileWatcher(new File("c:/temp/text.txt")) { 

     protected void onChange(File file) {    
      i++; 
      System.out.println("Executing iteration " + i); 
      System.out.println("File " + file.getName() + 
        " have change !"); 
      // code to cancel timer 
      if (i >= count) { 
       System.out.println("Finished Iterations"); 
       System.out.println("Stopping Timer"); 
       timer.cancel(); 
       System.out.println("Stopped Timer"); 

      } else { 

      } 
     } 
    }; 

     // repeat the check every second 
    timer.schedule(task, new Date(), 1000); 
} 
    } 
+0

「TimerTaskタスク=新しいFileWatcher」とはどういう意味ですか? – njzk2

+0

これは、TimerTaskを拡張する抽象クラスです。基本的にファイルの変更日を監視します。 – spry

+0

いつあなたは 'onChange'を呼びますか? – njzk2

答えて

0

私は)それが(実行を実装して意味し、あなたのFileWatcherはTimerTaskをを拡張すると仮定しています。 onChange()を呼び出さないと、メッセージを出力するrunメソッドの中にコードを置くことができます。

+0

私は推奨されるようにrunメソッドでprintコマンドを追加しました。動作しますが、タイマーが停止してからもう一度印刷します。 – spry

+0

間違いを発見しました。印刷はループの後であった。ループの前に変更し、今すぐ動作します。 – spry

0

印刷はループの後です。ループの前に変更し、今すぐ動作します。

関連する問題