最近导师下发一个任务,要求实现监听文件系统中的文件变化,并实时向管理员报告,以便管理员及时做出相应的处理,以免造成不必要的损失。
网上搜索的了一下,发现使用WatchService来实现的比较多,WatchService是Java SE7增加的服务,位于java.nio.file包中。网上的朋友都只是实现了对某个指定目录的监视,不包括对其各级子目录的监视,这不符合我的要求,于是经过整理修改,实现了对目录及其各级子目录的监视,代码如下:
注:这里是对整个E盘进行监视,如果E盘的文件及其子目录很多的话,速度可能会比较慢。
【补充】:经过一段时间的项目经验,知道监控的方式主要分为两种:扫描式和事件驱动式,WatchService是采用扫描式的,所以比较慢。如果追求效率的话可以考虑使用apache的commons-io里面的FileAlteration,她是采用事件驱动式的,效率比较高。
下面是WatchService的代码:
package wds;
import java.io.*;
import java.nio.file.*;
import java.nio