2013-03-20 8 views
5

Ich möchte mehrere Verzeichnisse mit Java NIO WatchService überwachen (überwachen). Mein Problem hier ist die Anzahl der zu betrachtenden Verzeichnisse ist dynamisch und der Benutzer kann eine beliebige Anzahl von Verzeichnissen zu WatchService hinzufügen. Ist das erreichbar?Java nio WatchService für mehrere Verzeichnisse

+2

wird hören Ja, es ist erreichbar. – Sanchit

+0

@Sanchit Vielen Dank für Ihre Antwort. Kannst du mir bitte sagen, wie ich das erreichen kann? –

Antwort

6

Es ist möglich, mehrere Pfade mit demselben WatchService zu registrieren. Jeder Pfad erhält seine eigene WatchKey. Die take() oder poll() wird dann die WatchKey entsprechend dem Pfad zurückgeben, der geändert wurde.

Weitere Informationen finden Sie unter Java's WatchDir example.

1

Ich versuche nur zu erklären, wie genau das mit WatchService gemacht werden kann.

ist hier ein Stück Code, das zeigt, wie Sie eine WatchService Instanz verwenden können und zu zwei Paths

 this.watcher = FileSystems.getDefault().newWatchService(); 
     this.keys = new HashMap<>(); 

     Path plugins = Paths.get(INSTANCE.getPluginPath()); 
     logger.info(String.format("Scanning %s ...", plugins)); 
     registerAll(plugins); 

     Path drivers = Paths.get(INSTANCE.getDriverPath()); 
     logger.info(String.format("Scanning %s ...", drivers)); 
     registerAll(drivers); 

Das Beispiel basiert auf Oracle Example