2013-03-20 57 views
5

我想使用Java NIO WatchService來監視(監視)多個目錄。 這裏我的問題是要觀看的目錄數量是動態的,用戶可以將任意數量的目錄添加到WatchService。這是可以實現的嗎?用於多個目錄的Java nio WatchService

+2

是的,這是可以實現的。 – Sanchit 2013-03-20 07:55:24

+0

@Sanchit感謝您的回答。你能指導我如何做到這一點 – 2013-03-20 08:39:00

回答

6

可以使用相同的WatchService註冊多個路徑。每條路徑都有自己的WatchKey。然後take()poll()將返回對應於修改的路徑的WatchKey

查看Java's WatchDir example瞭解詳情。

1

我只是想解釋如何使用WatchService來完成這件事。

下面是一段代碼,演示瞭如何使用一個WatchService實例,並聽取兩個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); 

的例子是基於Oracle Example