`

java File Notify or Watch

    博客分类:
  • JAVA
阅读更多

有需求需要监控本地文件或者目录的变化情况,然后做一些操作,在linux上已经有了很好的支持。

 

Linux: inotify 

http://www.linuxjournal.com/article/8478?page=0,0

 

然而java io中在JDK 6中还没实现,倒是JDK 7的NIO 2中实现了,针对增加这个file notify的需求早在01年就提了bug给sun, http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4526561。

 

JDK 7中针对IO还增加了其他新特性,见

The Java NIO.2 File System in JDK 7

http://java.sun.com/developer/technicalArticles/javase/nio/

http://download.oracle.com/javase/tutorial/essential/io/

 

针对File Notify这个在JDK 7的NIO2中叫 WatchService,也有一篇文章讲述他的用法

Watching A Directory for Changes — File Change Notification in NIO.2

http://blogs.sun.com/thejavatutorials/entry/watching_a_directory_for_changes

 

不过如果目前使用的话,倒是可以使用一个对inotify的java包装版本 jnotify,不过最近也不更新维护了(应该也够用了)

JNotify File system events library for Java

http://jnotify.sourceforge.net/

 

另外一个对文件监控的开源java实现 jpatchwatch

a Java library for monitoring directory and file changes

http://jpathwatch.wordpress.com/

 

 

对于windows下的文件监控倒是有一个很好的实现

Java Native Access

http://java.net/projects/jna  中的FileMonitor

 

Note :Zookeeper中也有对文件的watch,以后看下源码是怎么实现的,怀疑是wait-check-loop结构

 

 

 

分享到:
评论

相关推荐

    java之wait,notify的用法([ 详解+实例 ])

    Java之wait和notify的用法详解 在Java多线程编程中,wait和notify是两个非常重要的方法,它们都是Object类的方法,用于线程之间的通信和同步。下面我们将详细解释wait和notify的用法。 wait方法 wait方法是Object...

    FileNotify.rar_CE 2005_Win CE SDK_filenoti_notify _win CE 5

    标题 "FileNotify.rar_CE 2005_Win CE SDK_filenoti_notify_win CE 5" 暗示了这是一个关于Windows CE操作系统中文件通知功能的开发资源包,主要用于Windows CE 5.0版本。这个资源可能包含了在Windows CE平台上实现...

    java notify

    this is very usefull for you to develop it.

    wait_notify_demo

    `wait()`、`notify()`和`notifyAll()`是Java中的三个关键字,它们属于Object类的方法,主要用于线程间的通信,尤其在实现生产者消费者模式时发挥着重要作用。本文将深入探讨这些方法以及如何在实际场景中应用它们。 ...

    FileMonitor 基于jdk7文件监控WatchService

    3. **事件处理**:`FileMonitor`将事件处理的逻辑封装在内部,使得外部代码不必直接与`WatchKey`和`WatchEvent`打交道。这种设计使得开发者可以专注于业务逻辑,而不用关心底层的事件模型。 4. **异步处理**:为了...

    Java 同步方式 wait和notify/notifyall

    在Java中,`wait()`, `notify()`, 和 `notifyAll()` 是Java Object类的三个方法,它们在实现线程间通信和协作时扮演着关键角色。这些方法主要用于解决线程等待和唤醒的问题,是基于Java Monitor(监视器)模型的。 ...

    Java多线程wait和notify

    在Java中,`wait()` 和 `notify()` 方法是实现线程间通信和协作的重要工具,它们属于 `java.lang.Object` 类,这意味着所有类都默认继承了这两个方法。本文将详细探讨如何使用 `wait()` 和 `notify()` 来控制子线程...

    源码—Java多线程5—死锁和wait notify notifyAll

    源码—Java多线程5—死锁和wait notify notifyAll

    wait()、notify()和notifyAll()方法2---马克-to-win java视频

    wait()、notify()和notifyAll()方法2---马克-to-win java视频

    Java的sychronized、wait和notify范例

    `synchronized`关键字、`wait()`和`notify()`方法是Java多线程中用于控制并发访问共享资源的重要工具,它们是Java内存模型(JMM)的一部分,主要用于解决线程间的同步问题。 一、`synchronized`关键字 `...

    Java 同步锁 wait notify 学习心得

    标题和描述概述的知识点主要集中在Java的多线程机制中,特别是`wait`和`notify`方法在同步锁中的应用。这些方法对于控制线程之间的交互至关重要,尤其是在资源有限或需要确保数据一致性的情况下。 ### Java同步锁...

    java中几个notify、wait使用实例

    在Java的多线程编程中,`notify()`与`wait()`是实现线程间通信的重要方法,它们主要用于解决生产者消费者问题、读者写者问题等典型同步问题。这两个方法定义在`Object`类中,因此所有Java对象都可以作为锁来使用。在...

    佳明手表(Garmin watch) Image Notify APP

    佳明手表(Garmin watch)是一款深受运动爱好者和科技迷喜爱的智能穿戴设备,它集健康监测、运动追踪、智能通知等多种功能于一体。Image Notify APP是专为佳明手表设计的一款第三方应用程序,开发者出于对佳明手表的...

    JAVAWAIT和NOTIFY的用法.pdf

    JAVAWAIT和NOTIFY的用法.pdf

    Java多线程中wait、notify、notifyAll使用详解

    Java多线程中wait、notify、notifyAll使用详解 Java中多线程编程中,wait、notify、notifyAll三个方法是非常重要的,它们都是Object对象的方法,用于线程之间的通信。下面我们将详细介绍这三个方法的使用和作用。 ...

    详解Java程序并发的Wait-Notify机制

    Java程序并发的Wait-Notify机制是Java多线程编程中的一种重要同步工具,它允许线程之间通过共享对象进行通信和协作。这个机制基于Java的内置锁(也称为监视器锁),通常与`synchronized`关键字一起使用。在Java中,`...

    java notify和notifyAll的对比

    Java中的`notify`和`notifyAll`方法是多线程编程中的重要概念,它们都是`Object`类的方法,用于在同步控制中唤醒等待在特定对象监视器上的线程。理解这两个方法的区别对于编写高效的并发代码至关重要。 首先,`...

    浅谈java多线程wait,notify

    _java多线程wait、notify机制详解_ 在Java多线程编程中,wait和notify是两个非常重要的机制,用于实现线程之间的通信和同步。在本文中,我们将通过示例代码详细介绍Java多线程wait和notify的使用,帮助读者更好地...

    如何在Java中正确使用 wait, notify 和 notifyAll

     在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓冲区中有内容待...

    一个理解wait()与notify()的例子

    本文旨在解析一个具体的Java多线程示例代码,以帮助读者更好地理解`wait()`与`notify()`方法的作用及其实现机制。这两个方法是Java中实现线程间通信的重要手段之一,尤其在解决生产者消费者模型、读者写者问题等经典...

Global site tag (gtag.js) - Google Analytics