16

引入 Java 7WatchService用于持续监控文件系统。是否有 Java 6 的反向移植?

是否有具有类似功能的纯 Java 库?

4

3 回答 3

15

是的当然。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()。

于 2011-11-02T08:22:04.270 回答
5

一个纯 Java 库是不可能的。如果你想避免轮询,你需要一个原生组件。

http://wiki.netbeans.org/NativeFileNotifications提供了一些关于可用的本机 API 和包装它们的各种 Java 库的信息。

于 2011-12-09T15:28:31.757 回答
4

Jetbrains IntelliJ IDEA 有一个组件“虚拟文件系统”,它会触发本机文件系统观察程序,将底层文件系统更改通知回 IDEA。两年来,Jetbrains 一直在发布一个应该包含该组件的开源版本。它适用于 Java 6。

如常见问题页面所述,它是在 Apache 2.0 许可下发布的。

于 2011-11-01T15:16:36.383 回答