WatchService是java的NIO類新增加的監控文件變化的類。
WatchService是一個接口,利用Filesystems類獲取FileSystem,然后根據這個類,new一個WatchService。
具體用法如下
public static void main(String[] args) throws Exception {
//WatchService是一個接口,利用Filesystems類獲取FileSystem,然后根據這個類,new一個WatchService。
WatchService watchService= FileSystems.getDefault().newWatchService();
Paths.get("G:/").register(watchService,
StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE,
StandardWatchEventKinds.ENTRY_MODIFY);
while (true){
WatchKey key=watchService.take();
for(WatchEvent<?>evet:key.pollEvents()){
System.out.println(evet.context()+"文件發生了"+evet.kind()+"事件");
}
boolean vaild=key.reset();
if(!vaild){
break;
}
}
}

注意當重命名一個文件夾或者文件時,他會顯示先刪除再創建。
注意,例子中的take方法時阻塞的方法。
還有poll,如果獲取不到watchkey,立馬返回null,還有一個poll(long timeout,timeuint unit)設定一個等待時間。
