JNotify,一个支持动态监控文件和文件夹(支持级联监控)的架包。在linux系统中,调用的是linux底层的inotify服务,只是添加了对子文件夹级联监控的功能。在windows中,需要添加附件的dll文件,因为windows默认没有该服务。
使用很简单:
1,将jnotify包引入到工程中。
2,将jnotify依赖的so文件加入到java.library.path路径中。这个变量可能会有多个位置,随便将jnotify压缩包中附带的libjnotify.so文件加入到其中的任何一个路径中即可。如果不知道这个变量的值,可以使用System.getProperty("java.library.path")查看。当然,如果不想这么麻烦,可以在启动程序时指定JVM的参数
import net.contentobjects.jnotify.JNotify; import net.contentobjects.jnotify.JNotifyException; import net.contentobjects.jnotify.JNotifyListener; /** * 测试Jnotify监听文件目录变化 * @author yongbo.chen * */ public class TestJnotify { public static void main(String[] args) throws JNotifyException, InterruptedException { // 调用监听方法 new TestJnotify().simple(); } public void simple() throws JNotifyException, InterruptedException { // 监听的目录 String path = System.getProperty("user.home"); int mask = JNotify.FILE_CREATED | JNotify.FILE_MODIFIED | JNotify.FILE_DELETED | JNotify.FILE_RENAMED; // 是否监听子目录 boolean watchSubtree = true; int watchId = JNotify.addWatch(path, mask, watchSubtree, new JNotifyListener() { @Override public void fileRenamed(int wd, String rootPath, String oldName, String newName) { System.out.println("重命名文件:" + rootPath + "/" + newName); } @Override public void fileModified(int wd, String rootPath, String name) { System.out.println("修改文件:" + rootPath + "/" + name); } @Override public void fileDeleted(int wd, String rootPath, String name) { System.out.println("删除文件:" + rootPath + "/" + name); } @Override public void fileCreated(int wd, String rootPath, String name) { System.out.println("创建文件:" + rootPath + "/" + name); } }); // 移除监听 Thread.sleep(10000); JNotify.removeWatch(watchId); } }
JDK7 里面的 NIO 的WatchService,这个也可以实现监听。只要文件
发生变化,就会产生相应的事件
相关推荐
本资料包“JNotify监控文件夹及文件变化.zip”包含了一整套实现这个功能的资源。 首先,让我们深入了解JNotify库。JNotify的核心在于它的跨平台特性,它支持Windows、Linux和Mac OS X操作系统。在Windows环境下,它...
在这个"spring boot文件夹文件监听程序"项目中,我们聚焦于利用Spring Boot实现对特定文件夹的监控,并在检测到文件变化时执行相应的操作,比如自动获取遗漏文件。下面将详细介绍这一功能的实现原理和步骤。 首先,...
本案例的标题和描述提到了“监听文件下文件发生变化时复制文件到另一个文件夹”,这通常涉及到文件系统的观察者模式(Observer Pattern)和多线程技术。 首先,我们需要理解“监听文件”这一概念。在操作系统层面,...
用fileSystemWatcher 实时监控变化目录以及各目录下变化的文件,并将监控的目录的所有变化写入D盘的log.txt文件中。点击传送文件时,将监控的文件夹中的文件经过文件名和修改时间的比较后传入目标文件夹中。
在IT领域,尤其是在系统监控和自动化任务中,有时我们需要跟踪文件或文件夹的变化,以便在特定文件被创建、修改或删除时执行相应的操作。本文将详细介绍如何使用C++来监听文件夹内的文件操作,虽然标题提到的是C++,...
注:如果因为目录变更(删除、更改等)引起的该目录内的子文件和子文 件夹的变更(删除改变等)时,操作系统只提供该目录内一级目录下的 文件、文件夹变更的上报信息,若文件夹中包含多级子文件夹以及子文件信息, ...
Java实现实时监控目录下文件变化的方法 Java实现实时监控目录下文件变化的方法是指通过Java语言来实现实时监控目录下文件的变化情况,包括文件的创建、删除、修改等操作。这种方法可以应用于各种场景,例如文件系统...
在易语言中,我们可以使用“事件驱动”编程模型,通过监听文件或文件夹的变化来触发相应的处理程序。 首先,我们需要理解文件监视的基本概念。在操作系统层面,文件系统提供了一种机制,允许应用程序注册对特定文件...
该小程序是基于pyhon编制,可以自动监听指定的本地文件夹,当文件夹内出现新文件时,依据录入的ftp配置地址,实现文件自动上传FTP服务器的作用。该小程序支持同事监听两个本地文件夹,可以传输两个ftp服务器。此外,...
在IT领域,监控文件夹中的文件变化是一项常用的技术,它能帮助开发者或系统管理员实时跟踪文件系统的变动,以便及时响应和处理。这个技术通常应用于日志监控、数据同步、自动化脚本等多种场景。以下是关于“监控...
本文将详细讲解如何实现"监控文件夹内的文件变化"这一功能,我们将围绕标题和描述展开讨论,并结合提供的"Folder Notify"这一文件名,推测可能是一个用于文件夹监控的示例或工具。 首先,我们要理解什么是文件变化...
总的来说,通过理解Windows API和Delphi的面向对象特性,我们可以构建出强大的文件夹内容监控工具,实时记录并响应文件系统的任何变化。这种能力在软件开发、系统管理、数据分析等多个领域都有其独特的价值。
结合这两个知识点,当文件夹中的文件发生变化时,你可以调用`FileUploader.uploadFile`方法将新文件或修改后的文件上传到服务器。为了实现完全自动化,你可能还需要处理错误和异常,确保在上传过程中保持文件同步的...
coffee虽然自带监听文件变化自动编译成js,但一次开一个窗口只能监听一个文件。于是自己写了个vbs脚本,监听某目录下所有coffee文件,如有变化自动编译。 原理是无限循环扫描目录,比对coffee文件MD5值是否变化,...
本来以为coffee 一次只能监听一个js文件的变化自动编译,实际上是可以监听目录的。。。于是自己写了个vbs脚本,监听某目录下所有coffee文件,如有变化自动编译成js。 原理是无限循环扫描目录,比对coffee文件MD5值...
5. **运行并监听**:启动程序,`jnotify`将开始监听指定路径下的文件系统变化。 6. **取消监听**:如果不再需要监听,可以使用`JNotify.removeWatch`方法移除监听。 ```java JNotify.removeWatch(watchId); ``` ...
2. 创建FileSystemWatcher对象:首先,你需要实例化一个FileSystemWatcher对象,并设置其属性,如Path(要监视的文件夹路径)、Filter(要监控的文件类型)和NotifyFilters(要监听的事件类型)。 ```vb.net Dim ...
遍历指定文件夹下的所有文本夹,首先,获取所有的文件夹;其次,从找到的第一个文件开始,循环查找,直到没有文件为止,最后,将文件目录和文件名组合,并存放到数组中
`TFileWatcher`是VCL库的一部分,它简化了文件和文件夹变化的观察过程。而`FindFirstChangeNotification`是Windows API函数,能直接监听文件系统变更事件,更底层,灵活性更高。 2. **组件使用**: - **...
2. **事件处理**:当文件系统发生变化时,Jnotify会通过回调用户注册的监听器接口`JnotifyListener`来通知应用程序。监听器需要实现`fileCreated`、`fileDeleted`和`fileModified`方法,分别对应文件的创建、删除和...