Is there a sophisticated file system monitor for Java which is freeware or open source? [closed]

I'm looking for a Java library which can notify me about changes on the file system.

I found some free libraries, but they all use brute-force detection, i.e. polling in regular intervals. And the other ones are always commercial.

What I'm looking for is a library which uses the file monitor functions from the OS, i.e. FindFirstChangeNotification for Win32, FAM for Linux and whatever is available on other OS. I don't mind if brute-force is used as fallback, but for Windows and Linux it should use the available OS features.


Solution 1:

JNotify seems to do what you require.

Polling a filesystem (say, a directory for update time changes) won't impose a significant load on your system, and shouldn't be discounted. Apps like Tomcat etc. use this for managing hot deploys with few problems.

It's not a lot of help now, but the upcoming Java 7 has a WatchService precisely for this.

Solution 2:

If you are comfortable working on the bleeding edge of Java, have a look at JSR 203: More New I/O APIs aka nio2 which is due out in Java 7.

A new filesystem interface that supports bulk access to file attributes, change notification, escape to filesystem-specific APIs, and a service-provider interface for pluggable filesystem implementations;

Solution 3:

jpathwatch is another option. It implements Java 7′s API for directory monitoring, so it is easy to port to Java 7 if desired.