java.nio.file 软件包未检测到目录更改

  • 本文关键字:nio file 软件包 java java nio
  • 更新时间 :
  • 英文 :


我想检测正在写入目录的文件,因此认为Java NIO包是合适的。但是,我已经运行了他们的测试器代码(https://docs.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java( 它只会检测运行脚本的计算机所做的文件更改。 即我们有多个服务器正在运行,它们共享许多已安装的驱动器。如果我登录到这些服务器之一,运行测试代码,通过另一个终端再次登录到同一台机器并更改我正在监视的目录,这些更改将被检测到。但是,如果我登录到其他服务器,则不会进行这些更改。这是蔚来汽车的根本问题吗,在这种情况下,我应该使用其他东西,还是有解决方法?

它有点试图警告你:WatchService

平台依赖

关系[...]

如果监视的文件不位于本地存储设备上,则它是 如果可以检测到对文件的更改,则特定于实现。在 特别是,不需要对文件进行更改 检测远程系统。

恐怕您需要定期手动轮询。

这不一定是Java NIO的问题。

这在很大程度上取决于整个堆栈,例如:使用哪些文件系统,以及服务器上运行哪些操作系统。

示例:当您让一台服务器 X 在共享文件系统(例如 AFS(上创建新文件时,查看共享目录的另一台服务器可能看到有一个新文件。但只要文件写入,就需要登录 X 才能看到最新的写入。仅当写入过程完成并关闭文件时,写入的内容才会对其他服务器可见

因此,如前所述,真正的答案是研究您正在使用的文件系统/服务器操作系统的特征。这很好地对齐/解释了另一个答案所说的内容:Java NIO不能给你通用的保证,因为确切的行为是特定于实现的。

最新更新