JeeStudy 发表于 2016-7-18 23:28:37

JNotify:JAVA 监控文件系统库

官网:http://jnotify.sourceforge.net/
根据官网我们得知:

JNotify,是一个JAVA类库,它允许JAVA应用监听文件系统下面的事件:

[*]文件创建
[*]文件修改
[*]文件重命名
[*]文件删除



JNotify支持的平台:

[*]Windows      2000    以上版本
[*]Linux             2.6.14以上版本
[*]Mac OS X      10.5   以上版本






应用示例:
1.下载JAR文件:https://sourceforge.net/projects/jnotify/

2.把 jnotify-0.94.jar 放入到工程中。

3.把 jnotify_64bit.dll 文件放到JDK bin文件夹下,根据自己的系统选择32位还是64位的 dll 文件。

4.示例代码:

import java.io.File;
import java.util.Date;
import net.contentobjects.jnotify.JNotify;
import net.contentobjects.jnotify.JNotifyListener;
public class MainTest {
    public static void main(String[] args) {
      try {
            // path to watch
            // 指定要检测的目录
            String dir = new File(args.length == 0 ? "." : args).getCanonicalFile().getAbsolutePath();
            // watch mask, specify events you care about,or JNotify.FILE_ANY for all events.
            // 配置要检测的类型,配置你关心的(新建|删除|修改|重命名),或者直接标记为 JNotify.FILE_ANY ,它会监听所有类型
            int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED | JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;
            // watch subtree
            // 是否检测子目录
            boolean watchSubTree = true;
            JNotify.addWatch(dir, mask, watchSubTree, new JNotifyListener() {
                public void fileRenamed(int wd, String rootPath, String oldName, String newName) {
                  System.out.println("renamed" + rootPath + " : " + oldName + " -> " + newName);
                }
                public void fileModified(int wd, String rootPath, String name) {
                  System.out.println("modified" + rootPath + " : " + name);
                  if (name.contains("a.txt")) {
                        System.out.println("["+new Date().toLocaleString()+"]a.txt file was modified !");
                  }
                }
                public void fileDeleted(int wd, String rootPath, String name) {
                  System.out.println("deleted " + rootPath + " : " + name);
                }
                public void fileCreated(int wd, String rootPath, String name) {
                  System.out.println("created" + rootPath + " : " + name);
                }
            });
            System.out.println("Monitoring " + dir);
            while (true)
                Thread.sleep(10000);
      } catch (Exception e) {
            e.printStackTrace();
      }
    }
} -------------------------------------------------运行结果:

Monitoring E:\jNotifyTest
created E:\jNotifyTest : 新建文本文档.txt
renamed E:\jNotifyTest : 新建文本文档.txt -> 1.txt
modified E:\jNotifyTest : 1.txt
deleted E:\jNotifyTest : 1.txt















angel 发表于 2016-7-28 18:50:58

简单,明了,这个用作检测配置文件或者数据字典,自动刷新缓存,期待缓存的内容!
页: [1]
查看完整版本: JNotify:JAVA 监控文件系统库