Watch service 用来观察被注册了的对象的变化和事件。例如,在文件系统监控某一个文件目录下文件资源的创建,修改,删除,这个是WatchService的一种实现方式,用来监听文件状态变化的。是WatchService和Watchable两个接口的配合使用,WatchService类似于在观察者模式中的观察者,Watchable类似域观察者模式中的被观察者。
实例如下:
@Test public void testResourceChanged() throws IOException, InterruptedException, ExecutionException { final String pathName = ResourceChangedTest.class.getResource("./").getPath(); // 文件监控线程 Executors.newCachedThreadPool().submit(new Runnable() { public void run() { try { WatchService watchService = FileSystems.getDefault().newWatchService(); Path path = Paths.get(pathName); // 注册监听器 path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE); while (true) { // 阻塞方式,消费文件更改事件 List<WatchEvent<?>> watchEvents = watchService.take().pollEvents(); for (WatchEvent<?> watchEvent : watchEvents) { System.out.printf("[%s]文件发生了[%s]事件。%n", watchEvent.context(), watchEvent.kind()); } } } catch(Exception e) {} } }); Thread.sleep(1000); Path path2 = Paths.get(pathName + "test.xml"); File file = path2.toFile(); file.createNewFile();// 新建文件 file.delete();// 删除文件 Thread.sleep(1000); }
输出结果:
[test.xml]文件发生了[ENTRY_CREATE]事件。
[test.xml]文件发生了[ENTRY_DELETE]事件。
[test.xml]文件发生了[ENTRY_DELETE]事件。
相关推荐
使用WatchService监听文件变化.docx
本篇文章主要介绍了Java利用WatchService监听文件变化示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
用java8实现一个文件目录的监听,目录中文件创建、修改、删除等操作
今天小编就为大家分享一篇关于Java实现实时监控目录下文件变化的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
Java实现时间监听Java实现时间监听Java实现时间监听Java实现时间监听Java实现时间监听Java实现时间监听
基于java开发的局域网监听软件的设计.doc 基于java开发的局域网监听软件的设计.doc 基于java开发的局域网监听软件的设计.doc 基于java开发的局域网监听软件的设计.doc 基于java开发的局域网监听软件的设计.doc 基于...
1.JAVA 监听文件夹变化 2.模拟POST提交文件流同步服务器文件
适用于配置实时动态修改,无需重启服务器。效率极高
用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...
java 使用KeyListener监听键盘 java 使用KeyListener监听键盘
监听文件下文件发生变化时复制文件到另一个文件夹,里边用到了线程与一些基础的技术,确实是一些地方会用到的东西,你也可以当工具来用
主要介绍了Java设计模式之监听器模式,结合实例形式较为详细的分析了java设计模式中监听器模式的概念、原理及相关实现与使用技巧,需要的朋友可以参考下
coffee虽然自带监听文件变化自动编译成js,但一次开一个窗口只能监听一个文件。于是自己写了个vbs脚本,监听某目录下所有coffee文件,如有变化自动编译。 原理是无限循环扫描目录,比对coffee文件MD5值是否变化,...
学会使用监听域对象的属性变更 2、 实验环境 Eclipse 3、 实验内容 (1)创建测试页面,在chapter08项目的WebContext根目录中,编写一个testattribute.jsp页面,以观察各个域对象属性事件监听器的作用。 (2)在...
java实现监听数据库动态变化代码实例,很有参考意义。
java 使用MouseMotionListener监听鼠标 java 使用MouseMotionListener监听鼠标
对一个文件夹进行实时监控,当文件夹有新的文件出现时,对其做相应的操作
java一个监听器的例子
Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...
本来以为coffee 一次只能监听一个js文件的变化自动编译,实际上是可以监听目录的。。。于是自己写了个vbs脚本,监听某目录下所有coffee文件,如有变化自动编译成js。 原理是无限循环扫描目录,比对coffee文件MD5值...