java7中新增WatchService可以监控文件的变动信息(监控到文件是修改,新增、删除等事件;)

其中注册事件是需要的:

StandardWatchEventKinds.ENTRY_MODIFY,//更新
StandardWatchEventKinds.ENTRY_DELETE,//创建
StandardWatchEventKinds.ENTRY_CREATE,//删除

下面是案例:

import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.*;
import java.nio.channels.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List; public class WatchFile
{
public static void main(String[] args)
throws Exception{ String filePath = ("E:"); // 获取文件系统的WatchService对象
WatchService watchService = FileSystems.getDefault().newWatchService();
Paths.get(filePath).register(watchService
, StandardWatchEventKinds.ENTRY_CREATE
, StandardWatchEventKinds.ENTRY_MODIFY
, StandardWatchEventKinds.ENTRY_DELETE);
    // 如要监控子文件
File file = new File(filePath);
LinkedList<File> fList = new LinkedList<File>();
fList.addLast(file);
while (fList.size() > 0 ) {
File f = fList.removeFirst();
if(f.listFiles() == null)
continue;
for(File file2 : f.listFiles()){
if (file2.isDirectory()){//下一级目录
fList.addLast(file2);
//依次注册子目录
Paths.get(file2.getAbsolutePath()).register(watchService
, StandardWatchEventKinds.ENTRY_CREATE
, StandardWatchEventKinds.ENTRY_MODIFY
, StandardWatchEventKinds.ENTRY_DELETE);
}
}
} while(true)
{
// 获取下一个文件改动事件
WatchKey key = watchService.take();
for (WatchEvent<?> event : key.pollEvents())
{
System.out.println(event.context() +" --> " + event.kind());
}
// 重设WatchKey
boolean valid = key.reset();
// 如果重设失败,退出监听
if (!valid)
{
break;
}
}
}
}

最新文章

  1. ABP理论学习之NHibernate集成
  2. IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web项目
  3. Inno Step 安装包程序 写INI配置文件脚本
  4. 文件正在上传的转圈圈gif图片引出的fixed定位和absolute定位
  5. General Purpose Hash Function Algorithms
  6. Hive 7、Hive 的内表、外表、分区
  7. django-form表单的提交
  8. 奇葩问题:同样的字符串equal为false
  9. Java:设计类的继承关系时的技巧
  10. Typescript---03 类、接口、枚举
  11. eclipse安装使用fat打jar包
  12. HttpClient+Jsoup模拟登陆贺州学院教务系统,获取学生个人信息
  13. Java享元模式
  14. 查看SQL Server的版本及License
  15. 1、安装Angular-CLI脚手架工具
  16. C# Chart控件教程
  17. 一文让你完全弄懂Stegosaurus
  18. MongoDB学习路线
  19. day 67 django 之ORM 增删改查基础
  20. PowerBI开发 第十四篇:使用M公式添加列

热门文章

  1. python接口自动化测试六:时间戳,防重复处理
  2. 多行文字溢出[...]的实现(text-overflow: ellipsis)
  3. hdu 4549 M斐波拉契 (矩阵快速幂 + 费马小定理)
  4. -webkit-line-clamp超出省略
  5. canvas抛物线运动轨迹
  6. 【noip模拟赛4】找啊找啊找BF 拓扑排序
  7. 【Java】 剑指offer(53-2) 0到n-1中缺失的数字
  8. 【Java】 剑指offer(57-1) 和为s的两个数字
  9. Camera摄像头
  10. js基础梳理-究竟什么是变量对象,什么是活动对象?