首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有检测到目录更改的java.nio.file包

没有检测到目录更改的java.nio.file包
EN

Stack Overflow用户
提问于 2018-08-14 09:27:03
回答 2查看 126关注 0票数 3

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-14 09:33:55

它试图警告你:WatchService

平台依赖性 ..。 如果被监视的文件不在本地存储设备上,那么如果可以检测到对该文件的更改,则该文件的实现是特定的。特别是,不需要检测到远程系统上执行的文件的更改。

恐怕您需要定期手动投票。

票数 2
EN

Stack Overflow用户

发布于 2018-08-14 09:34:16

这不一定是Java的一个问题。

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

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

因此,如前所述,真正的答案是研究您正在使用的文件系统/服务器操作系统(Es)的特性。它很好地对齐/解释了另一个答案是什么: Java不能为您提供一般的保证,因为确切的行为是特定于实现的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51838123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档