我知道这是在一年前在其他地方被问到的,但我正在寻找任何更新。
我在 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 机器上。