标签:
public class 目录监视服务的使用示例 {public static void main(String[] args) throws IOException, InterruptedException{//WatchService接口的实现对象是由工厂方法创建的,需要从表示文件系统的java.nio.file.FileSystem类对象中得到。WatchService service = FileSystems.getDefault().newWatchService();//被监视的对象Path path = Paths.get("C:/Users/aming/Desktop");//注册监听事件//包括创建或者重命名(ENTRY_CREATE),更新(ENTRY_MODIFY)和删除(ENTRY_DELETE)path.register(service, StandardWatchEventKinds.ENTRY_CREATE,StandardWatchEventKinds.OVERFLOW);while(true){WatchKey key = service.take();//pollEvents方法获取所有的事件for(WatchEvent<?> event:key.pollEvents()){//context方法的返回值表示的是事件上下文信息//在于目录内容变化相关的事件中,上下文信息是一个Path接口的实现对象Path createPath = (Path)event.context();//resolve方法:将当前路径当成父目录,而把参数中的路径当成子目录或者是其中的文件createPath = path.resolve(createPath);//获得文件的大小long size = Files.size(createPath);System.out.println(createPath + "==>" + size);}//在处理完一个WatchKey接口实现对象中的全部事件后//需要通过reset方法来进行重置。//只有重置之后,新的产生的同类事件才有可能从WatchService接口实现对象中再次获取。key.reset();//如果希望取消对一个目录的监视//只需要调用对应的WatcKey接口实现对象的cancel方法即可key.cancel();}}}
标签:
原文地址:http://www.cnblogs.com/xiao2/p/5728484.html