请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站 JeeStudy企业开发官网①

JEE Study|JAVA EE|企业级开发学习网

 找回密码
 立即加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1348|回复: 1

JNotify:JAVA 监控文件系统库

  [复制链接]

116

主题

118

帖子

823

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
823

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2016-7-18 23:28:37 | 显示全部楼层 |阅读模式
官网: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.示例代码:

[Java] 纯文本查看 复制代码
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[0]).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
















知识改变命运!

JAVA EE 学习     JAVA EE 资料
JEE Study:企业级开发学习网!
回复

使用道具 举报

0

主题

7

帖子

37

积分

新手上路

Rank: 1

积分
37
发表于 2016-7-28 18:50:58 | 显示全部楼层

回帖奖励 +1

简单,明了,这个用作检测配置文件或者数据字典自动刷新缓存,期待缓存的内容!
回复 支持 1 反对 0

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

QQ|Archiver|手机版|小黑屋|JEE Study ( 京ICP备16036936   JeeStudy企业开发官网①

GMT+8, 2019-8-19 05:01 , Processed in 0.154451 second(s), 28 queries .

Powered by JeeStudy!

© 2016 JEE Study 企业级开发学习网

快速回复 返回顶部 返回列表