WatchService监控文件变化
来源:互联网 发布:淘宝海外物流怎么发货 编辑:程序博客网 时间:2024/05/17 07:58
概述
Java 7 对原有的NIO进行了重大的改进,新增了Path接口(和平台无关的路径),还有Paths,Files两个工具类。好了进入正题WatchService,在前面的Java版本中,如果想监控某个文件的变化,需要启动一个后台进程,每隔一段时间去遍历指定的目录,如果结果和上次的不同则认为发生了变化。而WatchService在这方面有更好的性能,但是需要结合Path类的register方法来使用。register方法的第一个参数需要制定一个WatchService来进行监听,后面为可选参数,指定的是需要监听哪些事件。
代码实现
import java.io.IOException;import java.nio.file.FileSystems;import java.nio.file.Paths;import java.nio.file.StandardWatchEventKinds;import java.nio.file.WatchEvent;import java.nio.file.WatchKey;import java.nio.file.WatchService;public class WatchServiceTest { public static void main(String[] args) throws InterruptedException { try { //得到一个实例 WatchService watcher = FileSystems.getDefault().newWatchService(); //结合Path的register方法来监控目录 C:\Users\Administrator\Desktop\123456\ Paths.get("C:\\Users\\Administrator\\Desktop", "123456") .register(watcher, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY); while(true){ WatchKey key = watcher.take(); for(WatchEvent<?> event : key.pollEvents()){ String ev = event.context()+""; if("ENTRY_CREATE".equals(event.kind())) System.out.println(ev+ " 文件 " + "创建了"); else if("ENTRY_MODIFY".equals(event.kind()+"")) System.out.println(ev+ " 文件--"+ "被修改了"); else if("ENTRY_DELETE".equals(event.kind()+"")) System.out.println(ev+ " 文件 " + "被删除了"); } //重设WatchKey boolean vaild = key.reset(); if(!vaild) break; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
总结
虽然可以简单实现了文件的监控,但需要注意,如果修改文件名,会先触发delete事件,再触发modify事件;如果在该目录下有其他文件夹,在子文件夹中发生的一切事件都被认为是被监控的目录下的modify事件。
阅读全文
1 0
- WatchService监控文件变化
- Java7 WatchService 监控文件变化
- 缓存文件变化 && WatchService监控文件变化分析
- [疯狂Java]NIO.2:WatchService、WatchKey(监控文件变化)
- NIO.2:WatchService、WatchKey(监控文件变化)
- JAVA 文件监控 WatchService
- 文件变化监视 java.nio.file.WatchService
- 使用WatchService类做文件监控总结
- watchService 监控文件生产数量的思路
- jdk7 WatchService 监控文件夹
- jdk7 WatchService 监控文件夹
- C#监控文件变化
- Java监控文件变化
- Java监控文件变化
- 监控文件变化
- java7 WatchService监听文件
- WatchService文件监听
- WatchService API实现监听文件系统中的文件变化(包括各级子目录)
- scrapy使用手册
- 11、U-boot编译及下载
- C语言算法
- 2017.5.14测试 第4题: 解码
- Python groupby,聚合,分组级运算
- WatchService监控文件变化
- oracle创建表空间和授权
- stylus入门使用方法
- 欢乐西游通用缓存系统设计—应用Redis
- Problem J: 新奇的加法运算
- Java访问修饰符
- 用 keras 建立超简单的汉字识别模型
- Linux命令行——stat命令详解
- 【转】C++中读取一行数据:get和getline