JNotify:文件系统事件的java库
JNotify是让应用程序监听文件系统事件的Java库,可以监听的事件例如:- 创建文件事件- 修改文件事件- 文件重命名事件- 删除文件事件
支持操作系统:1.Windows2.Linux3.Max OS
JNotify使用
解压后目录:
测试使用
1.导入相关包
1.1 导入jar包1.2 将jnotify_64bit.dll,jnotify.dll放入jre\bin目录中;我的jre目录是D:\Program Files\Java\jre-10.0.1\bin
简单实例
实现对文件目录的监听
importjava.io.File;importnet.contentobjects.jnotify.JNotify;public classFileNotify {public static void notify(String filepath) throwsException {if (!newFile(filepath).exists()) {
System.out.println("文件目录不存在");return;
}//定义你所需要检测的事件类型,或者是全部FILE_ANY
int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED | JNotify.FILE_MODIFIED |JNotify.FILE_RENAMED;int mask1 =JNotify.FILE_ANY;
System.out.println(JNotify.FILE_CREATED);//1
System.out.println(JNotify.FILE_DELETED);//2
System.out.println( JNotify.FILE_MODIFIED);//4
System.out.println( JNotify.FILE_RENAMED);//8
System.out.println(mask);//15
System.out.println(mask1);//15//是否检测子目录
boolean watchSubtree = true;//添加监听
int watchID = JNotify.addWatch(filepath, mask, watchSubtree, newListener());
System.out.println(watchID);//定义监听持续时间,此处是死循环,所以是时刻监听//while(true) {//Thread.sleep(1000*60);//}//定义监听时间,如果超过这个时间,程序会退出;如果不定义就得不到监听
Thread.sleep(1000*60);//60秒//移除监听
boolean res =JNotify.removeWatch(watchID);if (!res) {//invalid watch ID specified.
}
}public static voidmain(String[] args) {
String path="F:\\Pm25";
System.out.println(path);try{
notify(path);
}catch(Exception e) {//TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关监听事件的处理
importnet.contentobjects.jnotify.JNotifyListener;class Listener implementsJNotifyListener {public void fileRenamed(intwd, String rootPath, Strin