`

监控文件夹状态的JAVA插件

阅读更多
JNotify,一个支持动态监控文件和文件夹(支持级联监控)的架包。在linux系统中,调用的是linux底层的inotify服务,只是添加了对子文件夹级联监控的功能。在windows中,需要添加附件的dll文件,因为windows默认没有该服务,这是大拿们自己开发的一个功能。

使用很简单,以我的ubuntu系统为例:
1,将jnotify包引入到工程中。
2,将jnotify依赖的so文件加入到java.library.path路径中。这个变量可能会有多个位置,随便将jnotify压缩包中附带的libjnotify.so文件加入到其中的任何一个路径中即可。如果不知道这个变量的值,可以使用System.getProperty("java.library.path")查看。当然,如果不想这么麻烦,可以在启动程序时指定JVM的参数


Java代码 
1.-Djava.library.path=你的位置 
,这样和上面将so文件加入系统路径中是一样的效果。

然后,写个测试类就可以看见效果了。
我这里没有自己写,只是简单的拷贝了一下JNotify官网的测试代码。



Java代码 
1.
public class JnotifyTest {  
2.    public static void main(String[] args) {  
3.        try {  
4.            new JnotifyTest().sample();  
5.        } catch (Exception e) {  
6.            e.printStackTrace();  
7.        }  
8.        // System.out.println(System.getProperty("java.library.path"));  
9.    }  
10.  
11.    public void sample() throws Exception {  
12.        // path to watch  
13.        String path = System.getProperty("user.home");  
14.  
15.        // watch mask, specify events you care about,  
16.        // or JNotify.FILE_ANY for all events.  
17.        int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED  
18.                | JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;  
19.  
20.        // watch subtree?  
21.        boolean watchSubtree = true;  
22.  
23.        // add actual watch  
24.        int watchID = JNotify  
25.                .addWatch(path, mask, watchSubtree, new Listener());  
26.  
27.        // sleep a little, the application will exit if you  
28.        // don't (watching is asynchronous), depending on your  
29.        // application, this may not be required  
30.        Thread.sleep(1000000);  
31.  
32.        // to remove watch the watch  
33.        boolean res = JNotify.removeWatch(watchID);  
34.        if (!res) {  
35.            // invalid watch ID specified.  
36.        }  
37.    }  
38.  

39.        //可以在下面的监控方法中添加自己的代码。比如在fileModified中添加重新加载配置文件的代码 
40.   
class Listener implements JNotifyListener {  
41.        public void fileRenamed(int wd, String rootPath, String oldName,  
42.                String newName) {  
43.            print("renamed " + rootPath + " : " + oldName + " -> " + newName);  
44.        }  
45.  
46.        public void fileModified(int wd, String rootPath, String name) {  
47.            print("modified " + rootPath + " : " + name);  
48.        }  
49.  
50.        public void fileDeleted(int wd, String rootPath, String name) {  
51.            print("deleted " + rootPath + " : " + name);  
52.        }  
53.  
54.        public void fileCreated(int wd, String rootPath, String name) {  
55.            print("created " + rootPath + " : " + name);  
56.        }  
57.  
58.        void print(String msg) {  
59.            System.err.println(msg);  
60.        }  
61.  
62.    }  
63.}  


在实际的使用过程中,如果是web工程,我的习惯是添加一个listener监听器,当监听器初始化时,添加对指定文件或文件夹的监控。这样我们就不必为每次修改了配置文件都需要重启工程而苦恼了。如果是Java工程,就是需要的地方添加监控吧。



转自:http://lichuanbao.iteye.com/blog/1532951
分享到:
评论

相关推荐

    java实现文件监控小工具

    java 代码仅供参考学习! java实现文件监控小工具 ...用于代码审计时监控文件夹内文件的变动,支持Mac,Windows,Linux。 第一次运行时请根据提示在此页面下载对应动态依赖库放到指定位置即可(注意版本!)。

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

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

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

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

    蝙蝠CKEditor本地图片自动上传插件.zip

    插件安装完成后应在网页状态档位置显示“监控台:欢迎使用“本地图片自动上传插件”。 --------------------------------------------------- 本插件支持所有动态网站技术,DEMO所用技术为jsp,服务器端接受上传...

    JSP网页编辑器CKEditor含图片上传功能.rar

    JSP网页编辑器CKEditor含图片上传功能,本编辑器中含有一个本地图片自动上传插件,插件使用JAVA技术开发,需要配合JavaScript... 插件安装完成后应在网页状态档位置显示“监控台:欢迎使用“本地图片自动上传插件”。

    Java简单的文件扫描工具

    内容概要: 这段代码是一个Java小工具,名为 "FileScanner",用于递归扫描指定目录下的所有文件和文件夹,并输出文件信息,如文件名、路径、大小和最后修改时间。 适用人群: 适用于需要快速了解指定目录下文件和...

    nativescript-geolocation:Geolocation插件,用于获取当前位置,监控移动等

    地理位置插件,用于获取当前位置,监控运动等。 安装 在命令提示符/终端中,导航到您的应用程序根文件夹并运行: tns plugin add nativescript-geolocation 用法 探索插件用法的最佳方法是检查插件根文件夹中的...

    基于SpringBoot+SpringSecurity的RBAC管理系统,适合新手练习,做毕业设计,课程设计

    这是一款基于SpringBoot+Spring...在settings--plugins中搜索并安装lombok插件(Lombok 是一个编译时库,在Idea上有支持的插件,可用来帮助开发人员消除冗长的Java代码,例如实体中的setters和getters),否则编译不过

    pda-a-monitors:敏捷开发实践-最终工作-监控器

    pda-a监控器 如何 安装gradle依赖 安装Lombok插件 在根目录中运行docker文件 docker-compose up mq 使用凭据访问 :admin / admin 进入交易所并创建2个扇出交易所:test和testout 检查application.yml中的income....

    JMeterPlugins-Extras/Standard+ServerAgent 打包

    JMeter监控插件,用来监控被测服务器的cpu,io,等参数。 中JMeterPlugins-Standard和JMeterPlugins-Extras是客户端的,ServerAgent是服务端的。 1.解压客户端的两个文件,进入其路径JMeterPlugins-Extras(Standard)-...

    超轻量级工作流示例,工作流爱好者不能错过的程序

    5、图形化定制工作流,无需安装任何插件(需要IE内核支持)。 6、动态角色权限,可自定义增加环节权限 7、动态环节权限,可自定义增加环节权限 8、可以通过Web运行端的扩展接口向系统添加定制的Web页面 9、支持定时...

    Applet实现的ckeditor粘贴word图片且图片自动上传

    插件安装完成后应在网页状态档位置显示“监控台:欢迎使用“本地图片自动上传插件”。 --------------------------------------------------- 本插件支持所有动态网站技术,DEMO所用技术为jsp,服务器端接受上传...

    synologysurveillancestation:Synology监控站绑定

    对于安装,应将最新版本复制到openHAB安装的/ addons文件夹中。 对于升级,现有文件应被覆盖。 在重大更改或结构更改中,可能必须删除并重新创建现有内容,并保留现有渠道。 有关更多信息,请阅读相应发行版的发行...

    Chrome引导器,可自动更新Chromium

    禁用Plugin=0 禁用插件,也不会提示你安装插件 禁用Extension=0 禁用扩展 禁用UserScript=0 禁用自己使用的脚本 禁用JavaScript=0 禁用网页上的JavaScript 代理服务器配置= 例如你用的无jie...等号后面加上127.0.0.1...

    teamcity-postponed-schedule-trigger:计划的构建触发器,如果​​有任何构建仍在队列运行中,则有可能推迟触发

    下载并将其复制到您服务器的数据目录插件文件夹中。 更多信息请查看 配置 要添加延迟的计划构建触发器,您应该选择所需的构建并进入配置屏幕并找到构建触发器部分。 接下来单击Add new trigger按钮并选择“推迟计划...

    BileTools:制作垃圾的工具

    Bile工具 制作垃圾的工具 这到底是做什么的? 加载时修改的所有插件jar文件(maven编译或导出,甚至... 将新插件添加到plugins文件夹后,会将它们热拖放到服务器中 基本上也是plugman。 您可以卸载并重新加载插件。

    向前欧拉法matlab代码-CoppeliaSim_Steeringwheel_Tutorial:CoppeliaSim_Steeringwh

    具有集成开发环境的机器人模拟器V-REP基于分布式控制体系结构:每个对象/模型都可以通过嵌入式脚本,插件,ROS或BlueZero节点,远程API客户端或自定义进行单独控制解。这使得V-REP非常通用,非常适合多机器人应用。...

    单点登录源码

    服务网关,对外暴露统一规范的接口和包装响应结果,包括各个子系统的交互接口、对外开放接口、开发加密接口、接口文档等服务,可在该模块支持验签、鉴权、路由、限流、监控、容错、日志等功能。示例图: ![API网关]...

    Android典型技术模块开发详解

    1.2.1 安装ADT插件 1.2.2 安装SDK 1.2.3 配置源代码 1.2.4 创建AVD 1.3 Android模拟器 1.3.1 ADB工具 1.3.2 其它常用工具 1.4 本章小结 第2章 应用程序构建 2.1 创建Android工程 2.2 HelloAndroid详解 2.2.1 程序...

Global site tag (gtag.js) - Google Analytics