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)設定一個等待時間。