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工程,就是需要的地方添加监控吧。
分享到:
相关推荐
而在Linux系统上,jnotify使用的是共享对象文件(so),"libjnotify.so"就是这样一个文件。在Linux环境下,共享对象文件是动态链接库的一种形式,它被加载到运行时的进程空间中,提供函数调用。这里的"libjnotify.so...
这个例子将深入探讨如何使用`jnotify`来实现文件监控。 `jnotify`库通过JNI(Java Native Interface)与操作系统底层交互,因此可以跨平台工作,包括Windows、Linux和Mac OS X。在`jnotify`中,你可以注册对单个...
4. **多线程支持**:Jnotify设计为线程安全的,可以在多线程环境中使用,这使得它适合在服务器端应用中集成。 5. **卸载监听器**:通过`Jnotify.removeWatch`方法,我们可以停止对特定文件或目录的监听,释放相关...
要使用jNotify,首先需要在项目中引入它的JavaScript和CSS文件。通常,你可以将下载的压缩包解压后,将`jnotify.css`和`jnotify.js`文件放入你的项目资源目录中。然后,在HTML文件的`<head>`部分添加以下引用: ```...
2. **创建通知**:使用`.jnotify()`方法创建一个新的通知,例如`$.jnotify("这是一条通知消息");` 3. **配置选项**:可以通过对象形式传递配置参数,如`$.jnotify({text: "这是带有配置的提示", showClose: true});...
JNotify 使用JNI技术与操作系统的API进行交互,使得开发者无需了解复杂的底层细节就可以轻松地实现文件监控功能。 #### 三、实现步骤 1. **导入JNotify库** - 首先,我们需要在项目中引入JNotify库。这通常可以...
总结来说,JNotify是一个强大且易于使用的工具,它使得Java开发者可以轻松地监控文件系统的变化。通过学习和使用这个库,你可以提升应用程序的实时性,使其能够对文件系统的动态变化做出响应。这个资料包提供了一个...
使用`jnotify-lib-0.93`时,开发者需要将`jnotify-0.93.jar`添加到项目的类路径中,并根据目标平台选择对应的本地库。例如,在Windows环境下,需要链接`jnotify.dll`或`jnotify_64bit.dll`;在Mac OS X和Linux上,则...
在项目中使用jNotify,首先需要下载其源代码或者通过npm、yarn等包管理工具安装。一旦获取到jNotify的库文件,可以通过在HTML文件中添加链接或通过JavaScript引入。例如,如果库文件名为`jnotify.js`,可以这样引入...
jnotify-lib-0.93是这个库的一个版本,它为Java开发者提供了一个轻量级、高效且易于使用的API,使得能够监听硬盘上文件系统的各种动态变化。 jnotify库的核心功能在于它允许程序订阅文件系统事件,并在这些事件发生...
openrasp-jnotify一个改造过的 jnotify 版本改造点,补全linux inotify 事件监听,使监听事件更全面支持更低版本的 linux内核支持32位linux使用 IDEA 编译即可
使用jnotify-api时,开发者需要先在程序中添加jnotify的依赖,然后创建一个`JNotifyListener`实例,这个监听器定义了处理各种文件系统事件的方法。接下来,通过`JNotify.addWatch()`方法指定需要监视的文件或目录,...
标题中的"java文件监控例子"就是关于如何使用JNotify来实现文件监控的示例。 JNotify库的核心在于提供了一个简单的API,让开发者能够轻松注册对特定文件或目录的监听,并在这些文件或目录发生变化时接收到回调通知...
通过阅读和分析源代码,你可以了解到如何使用JNotify库,如何处理并发的文件监控任务,以及如何实现高效稳定的文件同步算法。 在实际应用中,FileSync这样的工具在数据备份、版本控制、协作编辑等场景下尤为有用。...
JNotify的使用需要将相应的库文件(例如Windows下的.dll文件或Linux下的.so文件)放置在Java的`java.library.path`所指向的路径中,通常是在JRE的/bin目录下。若遇到`UnsatisfiedLinkError`,可以通过设置`java....
jquery-notify, 在UI小部件工厂的顶部,像通知系统这样的growl/ubuntu jQuery UI 通知小部件像通知...使用 RGBA 。border-radius 和 box-shadow,所以它们在当前的IE 中并不像以前那么漂亮。参见 http://www.erichynd
实现文件实时监控的方法多种多样,例如使用操作系统的文件变更通知服务(如Windows的ReadDirectoryChangesW,Linux的inotify),或者使用第三方库如Python的watchdog。这些工具或API能够捕获文件系统事件,然后通过...
文件同步代码通常涉及到文件复制、文件夹监控以及各种API的使用,如Java 7中的`WatchService`和第三方库如`jnotify`。下面将详细介绍这些知识点。 **文件复制操作** 文件复制是一个基础但关键的功能,用于在不同的...
3. **创建通知**:使用插件提供的API方法,如`jnotify.show()`或`jnotify.alert()`,传入相应的参数,如消息文本、类型(info、warn、error)等。 4. **配置插件**:可以根据需求调整插件的配置,如通知出现的位置、...