【问题标题】:WatchService for Java 6 [closed]Java 6 的 WatchService [关闭]
【发布时间】:2011-11-01 15:07:57
【问题描述】:

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

有没有类似特性的纯Java库?

【问题讨论】:

    标签: java filesystems java-6


    【解决方案1】:

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

    【讨论】:

    • DefaultFileMonitor 似乎是一个轮询器,而不是等同于 WatchService,后者无需轮询即可从操作系统接收通知。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      它是根据 FAQ page 中声明的 Apache 2.0 许可发布的。

      【讨论】:

        猜你喜欢
        • 2013-04-28
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        • 2016-04-17
        相关资源
        最近更新 更多