5

我知道这是在一年前在其他地方被问到的,但我正在寻找任何更新。

我在 Java 7 中有一个程序,它使用 WatchService 来监视一个目录以查找在那里创建的新文件。如果我在本地机器上注册一个目录(例如 c:\NewFiles),那么一切都很好。但是,当我尝试让它收听网络驱动器上的文件夹时,它会编译并运行,但会立即退出,因为它似乎没有收到任何事件的通知......这只是我的代码片段......

 private final WatchService watcher;
 private final Map<WatchKey, Path> keys;
        this.watcher = FileSystems.getDefault().newWatchService();
        this.keys = new HashMap<>();

我注册目录...

String srcDirPath = "G:\\NewFiles";
Path dir = Paths.get(srcDirPath);
    WatchKey key = dir.register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
    keys.put(key, dir);

然后在检查事件的循环结束时......

        if (keys.isEmpty()) {
                System.out.println("Drive is inaccessible");
                break;
            }

在这里,我总是收到“驱动器无法访问”警告。我尝试将我的 Java 文件复制到这个网络目录并从那里运行它们,但我遇到了同样的问题。

是否可以从本地机器上运行这样的 Watchservice 来监听网络驱动器上目录的更改?我在这里遇到权限或防火墙问题吗?我使用的是 Windows 7,并且很可能网络驱动器也在 Windows 7 机器上。

4

0 回答 0