`
flyPig
  • 浏览: 136797 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java监控文件夹变化

阅读更多
1. 线程轮询扫描
优点:纯java实现,完美跨平台。
缺点:监听文件较多时,需要扫描的量太大;响应不是非常及时,依赖于扫描间隔时间。

2. 文件钩子
优点:事件驱动方式,无目录扫描。
缺点:跟平台相关

Jnotify开发包是个不错的文件钩子库,使用方式如下:
public class FieMonitor
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        String monitedPath = "E:/templete";
        int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED | JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;
        // 是否监视子目录
        boolean watchSubtree = true; 
        try{
        int watchID = JNotify.addWatch(monitedPath, mask, watchSubtree, new Listener());
        Thread.sleep(1000000);
        boolean res = JNotify.removeWatch(watchID);
        if (!res)
        {
            // invalid
        }
        }catch(Exception e)
        {
            e.printStackTrace();
        }

    }

    public static class Listener implements JNotifyListener
    {
        public void fileRenamed(int wd, String rootPath, String oldName, String newName)
        {
            print("renamed " + rootPath + " : " + oldName + " -> " + newName);
        }

        public void fileModified(int wd, String rootPath, String name)
        {
            print("modified " + rootPath + " : " + name);
        }

        public void fileDeleted(int wd, String rootPath, String name)
        {
            print("deleted " + rootPath + " : " + name);
        }

        public void fileCreated(int wd, String rootPath, String name)
        {
            print("created " + rootPath + " : " + name);
        }

        void print(String msg)
        {
            System.err.println(msg);
        }
    }
}

额外说明:win下面rename一个文件,产生2个事件 rename和 modify

这个库还有个缺点:要在java.library.path下加入依赖的dll (jnotify.dll/jnotify_64bit.dll),让本人非常不爽。 跟进源码,发现是用的
System.loadLibrary("jnotify")
加载,难怪。遂将其改为
System.load("xxxx/jnotify.dll")
方式,将dll、so等文件和class文件重新打包成一个jar,爽了!
分享到:
评论

相关推荐

    java编写的ftp文件实时监控下载上传

    用java语言编写的ftp小工具,可以按指定时间监控ftp服务器,把服务器指定目录内新产生的文件或者文件夹下载到本地指定文件夹,下载后删除数据。 也可以监控本地文件夹,把文件夹内新产生的文件或者文件夹整体上传到...

    Java监控目录文件夹程序.rar

    Java监控目录文件夹程序,用Java写的简单目录监视系统,每5秒会自动扫描一次被监视的文件夹,可让用户了解该目录中文件大小及文件增减数目的变化。

    JNotify监控文件夹及文件变化.zip

    通过java代码利用JNotify工具实现监控一个文件夹下的文件或者文件夹的动态变化,资料包含文件代码,maven依赖,dll动态库(win和linux)

    spring boot文件夹文件监听程序

    基于springboot的文件夹监听和遗漏文件自动获取功能以及springboot编译的直接可运行的bat文件

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目源代码

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    基于java的远程监控系统的设计与实现【文献综述】.pdf

    文献综述 计算机科学与技术 基于 java 的远程监控系统的设计与实现 一、前言 近年来,随着计算机及网络的应用普及,千千万万的人们在娱乐、通讯、学习、工作等 各方面都实现了前所未有的信息化,极大地提高了生活...

    Java简单的文件扫描工具

    适用人群: 适用于需要快速了解指定目录下文件和文件夹信息的个人用户、系统管理员和开发人员,特别是在文件管理、查找文件或监控文件变化的情况下。 使用场景及目标: 用户可以指定一个目录路径,工具将扫描该目录下...

    http服务器文件自动上传

    java监控windows某一文件夹下,监控文件变化,并自动上传至http服务器。 支持开机启动,后台“静默”执行。 ---- 需要安装jdk8以上。

    xmljava系统源码-FileSyncForServers:服务器间文件同步

    jnotify监控文件变化,并将变化的文件通过linux rsync 命令同步到config.properties配置中配置的服务器 ##文件结构说明 src 为java源代码文件 target 为项目编译文件输出目录 pom.xml 为maven项目配置文件 FileSync ...

    BModeUltrasound.zip

    使用java 通过文件监听来监控指定文件夹下发生的变化import java.nio.file.WatchEvent; import java.nio.file.WatchKey; import java.nio.file.WatchService;

    resin-jvm 调优

    在Bea安装完毕的目录下可以看到有一个类似于jrockit81sp1_141_03的文件夹。这就是Bea新JVM所在目录。不同于HotSpot把Java字节码编译成本地码,它预先编译成类。JRockit还提供了更细致的功能用以观察JVM的运行状态,...

    精通ANDROID 3(中文版)1/2

    7.4.7 使用菜单响应数据变化  7.5 通过XML文件加载菜单  7.5.1 XML菜单资源文件的结构  7.5.2 填充XML菜单资源文件  7.5.3 响应基于XML的菜单项  7.5.4 其他XML菜单标记简介  7.6 资源  7.7 小结  ...

    精通Android 3 (中文版)2/2

    7.4.7 使用菜单响应数据变化  7.5 通过XML文件加载菜单  7.5.1 XML菜单资源文件的结构  7.5.2 填充XML菜单资源文件  7.5.3 响应基于XML的菜单项  7.5.4 其他XML菜单标记简介  7.6 资源  7.7 小结  ...

    游戏画面就弹出内存不能为read修复工具

    例五:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为 “read”,终止程序请按确定。解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方...

    Activiti6.0教程例子下载

    Activiti 作为一个遵从 Apache 许可的工作流和业务流程管理开源平台,其核心是基于 Java 的超快速、超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。 Activiti 流程引擎...

    测试培训教材

    9、测试过程监控 计划测试的运行 在“Mercury Tours 1.0.1”中新建一个测试集: 把“Sign-On/Sign-Off”中的测试用例“Sign-On Page”添加到测试集中: 切换到“执行流”界面,添加“Sign-On Password”...

Global site tag (gtag.js) - Google Analytics