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的参数
-Djava.library.path=你的位置
,这样和上面将so文件加入系统路径中是一样的效果。
然后,写个测试类就可以看见效果了。
我这里没有自己写,只是简单的拷贝了一下JNotify官网的测试代码。
public class JnotifyTest {
public static void main(String[] args) {
try {
new JnotifyTest().sample();
} catch (Exception e) {
e.printStackTrace();
}
// System.out.println(System.getProperty("java.library.path"));
}
public void sample() throws Exception {
// path to watch
String path = System.getProperty("user.home");
// watch mask, specify events you care about,
// or JNotify.FILE_ANY for all events.
int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED
| JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;
// watch subtree?
boolean watchSubtree = true;
// add actual watch
int watchID = JNotify
.addWatch(path, mask, watchSubtree, new Listener());
// sleep a little, the application will exit if you
// don't (watching is asynchronous), depending on your
// application, this may not be required
Thread.sleep(1000000);
// to remove watch the watch
boolean res = JNotify.removeWatch(watchID);
if (!res) {
// invalid watch ID specified.
}
}
//可以在下面的监控方法中添加自己的代码。比如在fileModified中添加重新加载配置文件的代码
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);
}
}
}
在实际的使用过程中,如果是web工程,我的习惯是添加一个listener监听器,当监听器初始化时,添加对指定文件或文件夹的监控。这样我们就不必为每次修改了配置文件都需要重启工程而苦恼了。如果是Java工程,就是需要的地方添加监控吧。
分享到:
相关推荐
jnotify32 位
jNotify漂亮的提示插件
这个是Jnotify的源码,相关配置,及jar包。是我千辛万苦找到的,希望能帮上大家,免去寻找的麻烦。
jnotify_64bit jnotify_64bit jnotify_64bit jnotify_64bit
包括jnotify工具 jar包、动态链接库以及源码资料 JNotify,一个支持动态监控文件和文件夹(支持级联监控)的架包。在linux系统中,调用的是linux底层的inotify服务,只是添加了对子文件夹级联监控的功能。在windows...
jnotify(包含dll与so) 需要的下载..
NULL 博文链接:https://andilyliao.iteye.com/blog/634586
基于 Jquery 的 Nitofication 元件. 提供很基本但實用的功能. 文檔大小只有2K.
jNotify:操作结果信息提示条
jnotify-lib-0.93 通过java调用dll 实现目录变化的系统事件通知,比轮询 多线程监控 更胜一筹
JNotify 基于Jquery的消息提示插件 参数 var defaults = { // 容器 notifyContainer 'className':'JNotify-danger', //容器 notifyContainer附加类名 'theme':'error', // 主题 “success”、“error”、...
openrasp-jnotify一个改造过的 jnotify 版本改造点,补全linux inotify 事件监听,使监听事件更全面支持更低版本的 linux内核支持32位linux使用 IDEA 编译即可
jnotify-lib-0.93.rar java监听硬盘的引用包,可以通过java来监听到硬盘上的创建、修改、删除文件的动作等等
通过java代码利用JNotify工具实现监控一个文件夹下的文件或者文件夹的动态变化,资料包含文件代码,maven依赖,dll动态库(win和linux)
在电脑C盘中找到Idea的插件目录,然后直接将这个文件拷贝进去即可使用
jnotify-api jnotify 是一个 api 通知,旨在在由 java 创建的应用程序中提供信息性消息
jquery-notify, 在UI小部件工厂的顶部,像通知系统这样的growl/ubuntu jQuery UI 通知小部件像通知...使用 RGBA 。border-radius 和 box-shadow,所以它们在当前的IE 中并不像以前那么漂亮。参见 http://www.erichynd
2)JNotify是一个JQuery插件,基于JQuery UI实现,用于创建页面消息提醒和状态提示条。 http://jnotify.codeplex.com/ 演示地址:http://www.fabiofranzini.com/jNotify/Demo.html 3)Humane JS是一个不依赖...
对文件进行每五分钟的监控,把整个文件的内容全部传输至另一文件.以达到两个文件的一致性.