2013-03-20 15 views
5

Chcę oglądać (monitorować) wiele katalogów przy użyciu Java NIO WatchService. Mój problem polega na tym, że liczba katalogów do obejrzenia jest dynamiczna, a użytkownik może dodać dowolną liczbę katalogów do WatchService. Czy to jest osiągalne?Obsługa usługi Java nio WatchService dla wielu katalogów

+2

Tak, to jest możliwe do osiągnięcia. – Sanchit

+0

@Sanchit Dzięki za odpowiedź. Czy możesz mi doradzić, jak to osiągnąć? –

Odpowiedz

6

Możliwe jest zarejestrowanie wielu ścieżek z tym samym WatchService. Każda ścieżka ma swój własny numer WatchKey. take() lub poll() zwróci następnie WatchKey odpowiadającą zmodyfikowanej ścieżce.

Aby uzyskać szczegółowe informacje, patrz: Java's WatchDir example.

1

Próbuję tylko wyjaśnić, jak dokładnie można to zrobić za pomocą WatchService.

Oto fragment kodu, który pokazuje w jaki sposób można korzystać z jednego WatchService instancji i słuchać dwa 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); 

Przykład jest oparty na Oracle Example

Powiązane problemy