2016-12-02 15 views
0

私は、フォルダ内のファイル変更を監視するためのプログラムを実行しています。thisは自分のプログラムの参照リンクです。残念ながら私は

は、これは私のサンプルコードで私は

WatchServiceがJavaで登録できません

import java.nio.file.FileSystem; 
import java.nio.file.FileSystems; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
import java.nio.file.StandardWatchEventKinds; 
import java.nio.file.WatchEvent; 
import java.nio.file.WatchKey; 
import java.nio.file.WatchService; 
import java.util.HashMap; 
import java.util.Map; 

public class FileDetect { 
    public static void main(String [] args) 
    { 
     try(WatchService svc = FileSystems.getDefault().newWatchService()) 
     { 
      Map<WatchKey, Path> keyMap = new HashMap<>(); 
      Path path = Paths.get("files"); 
      keyMap.put(path.register(svc, 
        StandardWatchEventKinds.ENTRY_CREATE, 
        StandardWatchEventKinds.ENTRY_DELETE, 
        StandardWatchEventKinds.ENTRY_MODIFY, 
        path)); 

      WatchKey wk ; 
      do 
      { 
       wk = svc.take(); 
       Path dir = keyMap.get(wk); 
       for(WatchEvent<?> event : wk.pollEvents()) 
       { 
        WatchEvent.Kind<?> type = event.kind(); 
        Path fileName = (Path)event.context(); 
        System.out.print(fileName); 
       } 
      } 
      while(wk.reset()); 
     } 
     catch(Exception e) 
     { 

     } 

    } 
} 



である。これは私のコンパイラのエラーメッセージを表示

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    The method register(WatchService, WatchEvent.Kind<?>[], WatchEvent.Modifier...) in the type Path is not applicable for the arguments (WatchService, WatchEvent.Kind<Path>, WatchEvent.Kind<Path>, WatchEvent.Kind<Path>, Path) 



である私のコードに若干の誤差が直面していますWatchServiceのための私の登録メソッドでエラーを取得、私はいくつかのリンクを検索している私は構文を使用する方法でインクが正しいはずです。

答えて

2

括弧を間違えたと思います。試してみてください:

keyMap.put(path.register(svc, 
          StandardWatchEventKinds.ENTRY_CREATE, 
          StandardWatchEventKinds.ENTRY_DELETE, 
          StandardWatchEventKinds.ENTRY_MODIFY), 
      path); 
+0

ああ、私の間違いです。あなたの助けてくれてありがとう、私はそれを正しい場所に置いた後の仕事です – attack

関連する問題