java File Notify or Watch

有需求需要监控本地文件或者目录的变化情况,然后做一些操作,在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,jdk,oracle,linux,wordpress)