2011-09-14 6 views
2

フォルダ内のファイルの作成を検出しようとしていますが、WatchServiceは2番目のファイルの作成を検出できません。それはkey = watcher.take()に固執します。どんな考え?私はUbuntu 11.04 x86を使用しています。あなたがイベントを処理した後key.reset()を呼び出す必要がありJava:nio WatchService - 2番目のファイルの作成を検出できません。どうして?

private void watchWorkingDirectory() { 
    try { 
     WatchService watcher = FileSystems.getDefault().newWatchService(); 
     WatchKey key; 
     key = Paths.get(tailSource, "").register(watcher, ENTRY_CREATE); 

     for (;;) { 

      System.err.println("Watching current working directory..............................................."); 
      // wait for key to be signalled 
      key = watcher.take(); 

      System.out.println("Event detected:"); 


      for (WatchEvent<?> event : key.pollEvents()) { 
       WatchEvent.Kind<?> kind = event.kind(); 

       if (kind == ENTRY_CREATE) { 
        tailSource = event.context().toString(); 
        System.out.println(tailSource); 
        File file = new File(tailSource); 
        BufferedReader br = new BufferedReader(new FileReader(file)); 
        System.out.println(br.readLine()); 
        tailer = new Tailer(file, tListener, 1, false); 
        (new Thread(tailer)).start(); 
       } 
      } 
     } 

    } catch (IOException | InterruptedException e) { 
     System.out.println(e.getMessage()); 
    } 
} 

}

+0

私はあなたが任意の予期しないイベントを取得する場合、 'ログインできますか?)アプリケーションがちょうど'(取るに座っていると仮定 –

答えて

関連する問題