WatchService for Java 6
Java 7引入了WatchService
来持续监视文件系统。 是否有Java 6的后端口?
是否有具有类似function的纯Java库?
当然是。 Apache VFS就是这样做的。 你可以在http://commons.apache.org/vfs/下找到它。 它是一个可以监控文件的纯java库,它非常易于使用:
FileSystemManager manager = VFS.getManager(); FileObject file= manager.resolveFile("c:/MyFile.txt"); DefaultFileMonitor fm = new DefaultFileMonitor(new MyListener()); fm.setDelay(5000); fm.addFile(file); fm.start();
上面的代码将监视文件c:/MyFile.txt。 如果它改变,则调用对象new MyListener()。
一个纯Java库是不可能的; 如果要避免轮询,则需要本机组件。
http://wiki.netbeans.org/NativeFileNotifications提供了有关可用本机API和包装它们的各种Java库的一些信息。
Jetbrains IntelliJ IDEA有一个组件“ 虚拟文件系统 ”,可以激活本机文件系统观察程序,将基础文件系统更改通知给IDEA。 两年来,Jetbrains一直在发布一个应该包含该组件的开源版本。 它适用于Java 6。
它是在FAQ 2.0 页面中声明的Apache 2.0许可下发布的。