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)设定一个等待时间。