`
flyPig
  • 浏览: 139649 次
  • 性别: 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实现实时监控目录下文件变化的方法

    通过使用FileAlterationObserver,可以监控文件夹的变化情况,并执行相应的操作。 知识点7:使用线程来定时刷新检测文件变化情况 通过使用线程,可以定时刷新检测文件变化情况。例如,可以使用...

    src.rar_java监控文件夹_文件监控_监控文件

    总结来说,这个项目通过ZJPFileListener和ZJPFileMonitor两个类,实现了基于Java的文件监控功能,能够实时监测文件夹中文件的状态变化,并按照设定的时间间隔进行检查。这对于需要实时跟踪文件系统变化的系统来说...

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

    本项目“Java监控目录文件夹程序”是利用Java编写的一个实用工具,旨在实时监控指定目录下的文件和文件夹变化。这个程序每5秒进行一次自动扫描,更新并显示目录中的文件大小和数量变化,对于开发者来说,这种功能...

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

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

    目录监控 监控文件夹

    3. 系统服务:Windows的计划任务或Linux的服务,定期执行监控脚本,检查文件夹变化。 4. 集成解决方案:使用专门的监控软件,如Nagios、Zabbix等,它们通常提供插件或配置选项来监控文件夹。 五、监控文件夹的注意...

    监控文件夹内的文件的变化(Dir Watcher).

    提供的"Demo"很可能是用某种编程语言(如Python、Java、C#等)实现的一个示例程序,用于演示如何使用Dir Watcher库来监控文件夹变化。它可能包括以下部分: 1. 初始化:设置要监控的文件夹路径,并配置感兴趣的事件...

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

    本资料包“JNotify监控文件夹及文件变化.zip”包含了一整套实现这个功能的资源。 首先,让我们深入了解JNotify库。JNotify的核心在于它的跨平台特性,它支持Windows、Linux和Mac OS X操作系统。在Windows环境下,它...

    TXT_test.rar_test.txt文_监控文件夹_监控文件夹下的文件生成

    在IT领域,监控文件夹下的文件生成是一种常见的需求,特别是在自动化和系统监控的场景中。这个标题"TXT_test.rar_test.txt文_监控文件夹_监控文件夹下的文件生成"暗示了我们正在处理一个与文本文件(test.txt)相关...

    监听文件下文件发生变化时复制文件到另一个文件夹

    本案例的标题和描述提到了“监听文件下文件发生变化时复制文件到另一个文件夹”,这通常涉及到文件系统的观察者模式(Observer Pattern)和多线程技术。 首先,我们需要理解“监听文件”这一概念。在操作系统层面,...

    java 监听本地文件自动上传服务器

    首先,让我们从“JAVA 监听文件夹变化”这个知识点开始。Java提供了一种称为`WatchService`的机制,它允许程序监听指定目录下的文件系统事件。通过`java.nio.file.FileSystems`和`java.nio.file.Path`类,我们可以...

    spring boot文件夹文件监听程序

    总的来说,"spring boot文件夹文件监听程序"是一个结合了Java文件系统监听和Spring Boot自动化功能的实用工具,它可以实时监控指定目录,及时响应文件变化,对于文件管理、数据同步等场景具有很高的价值。...

    文件夹监控

    2. 第三方库:开发者可以借助第三方库简化跨平台的文件监控,如Python的watchdog,Java的jfilemonitor,Node.js的chokidar等。 3. 系统服务:某些操作系统内置了文件监控服务,例如Windows Server的File Replication...

    java实现windows文件系统操作监控

    在Java编程环境中,实现Windows文件系统的操作监控是一个有趣且实用的技术挑战。这涉及到对系统底层事件的捕获,通常需要借助于系统钩子(System Hooks)的概念。在Java中,虽然原生支持并不完善,但我们可以通过...

    Java 实现实时监听文件夹是否有新文件增加并上传服务器功能

    WatchService是一个用于监控文件系统变化的工具,能够检测到文件夹内文件的变化事件,例如创建、删除、修改等。它是Java NIO的一部分,可以用于构建文件的实时监控系统。要使用WatchService,首先需要通过File...

    实时监控目录(文件夹)的更新状态,与外部目录同步操作。(自己做的一个例子)

    在IT行业中,实时监控目录(文件夹)的更新状态并实现与外部目录的同步操作是一项常见且重要的任务,尤其在自动化、数据备份、文件同步等场景下。这个例子中的小工具利用了.NET Framework中的`FileSystemWatcher`类...

    监控文件夹,如果有新生成的文件就可以进行业务逻辑的实现

    Java 7引入了一个强大的API,名为`java.nio.file.FileSystems`和`java.nio.file.WatchService`,使得我们可以方便地监控指定文件夹的新文件生成事件。这个功能在标题和描述中都有所提及,下面我们将深入探讨如何利用...

    java使用WatchService监控文件夹示例

    在本文中,我们将深入探讨如何使用Java的`WatchService` API来监控文件夹。 `WatchService` API是自Java 7开始引入的,位于`java.nio.file`包下。以下是一些关键的概念和方法: 1. **WatchService**:这是核心接口...

    监测网络共享文件夹

    `FileSystemWatcher`是.NET Framework提供的一个强大工具,它允许程序实时监控指定目录及其子目录下的文件和文件夹变化。通过订阅特定的事件,如文件创建、修改、删除或重命名,我们可以及时获取到共享文件夹中的...

    文件夹监视.e.rar

    总结来说,文件夹监视是IT管理中的一个重要工具,通过实时监控文件夹变化,可以提高工作效率,优化数据管理,并为各种自动化任务提供基础。"文件夹监视.e.rar"中的内容可能包含实现这一功能的具体代码或配置,对于...

    java 使用线程监控文件目录变化的实现方法

    Java 使用线程监控文件目录变化的实现方法 Java 使用线程监控文件目录变化的实现方法是指通过 Java 语言实现对文件目录的实时监控,以便及时检测文件的变化情况。本文将详细介绍 Java 使用线程监控文件目录变化的...

Global site tag (gtag.js) - Google Analytics