我想检测正在写入目录的文件,因此认为 Java NIO 包比较合适。但是,我已经运行了他们的测试代码 ( https://docs.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java ) 它只会检测运行脚本的机器所做的文件更改。 也就是说,我们有多个服务器在运行,它们共享许多已安装的驱动器。如果我登录到这些服务器之一,运行测试代码,通过另一个终端再次登录到同一台机器并更改我正在观看的目录,这些更改将被检测到。但是,如果我登录到不同的服务器,则不会发生这些更改。这是 NIO 的基本问题吗?在这种情况下,我应该使用其他东西吗?或者是否有解决方法?
最佳答案
它有点试图警告你:WatchService
Platform dependencies
[...]
If a watched file is not located on a local storage device then it is implementation specific if changes to the file can be detected. In particular, it is not required that changes to files carried out on remote systems be detected.
恐怕您需要定期手动轮询。
关于java.nio.file 包未检测到目录更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51838123/