【发布时间】:2011-11-01 15:07:57
【问题描述】:
Java 7 引入了WatchService 用于持续监控文件系统。是否有 Java 6 的反向移植?
有没有类似特性的纯Java库?
【问题讨论】:
标签: java filesystems java-6
Java 7 引入了WatchService 用于持续监控文件系统。是否有 Java 6 的反向移植?
有没有类似特性的纯Java库?
【问题讨论】:
标签: java filesystems java-6
是的,当然。 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 有一个组件“Virtual File System”,它会触发本机文件系统观察程序,将底层文件系统更改通知回 IDEA。两年来,Jetbrains 一直在发布一个应该包含该组件的开源版本。它适用于 Java 6。
它是根据 FAQ page 中声明的 Apache 2.0 许可发布的。
【讨论】: