gpt4 book ai didi

Java WatchService 在观看映射驱动器时不生成事件

转载 作者:IT老高 更新时间:2023-10-28 20:28:16 31 4
gpt4 key购买 nike

我实现了一个文件观察器,但我注意到 java nio 文件观察器不会为在映射驱动器上复制的文件生成事件。例如,我在 Unix 上运行文件观察器来观察映射到 windows (H:\) 上的本地目录 (/sharedfolder),然后我已在此目录 (H:\) 中放置了一个文件,但文件观察程序没有生成任何事件。现在,如果我在 Windows 上运行文件观察器来观察映射驱动器 (H:\),它指的是 unix 路径 (/sharedfolder),然后我从 unix 放置一个文件在此文件夹中,文件观察程序识别更改并生成事件。它看起来像一个错误,或者我可能遗漏了一些东西,有什么想法吗?

最佳答案

我在尝试通过 CIFS 观看已挂载的 Windows 共享时遇到了同样的问题。似乎无法获得 filesystem events for CIFS mounts .

Java 7 NIO FileWatcher 的 linux 实现使用 inotify。 Inotify 是一个 linux 内核子系统,用于通知文件系统更改,非常适合本地目录,但显然不适用于 CIFS mounts .

在 Oracle 中,修复 this bug 似乎并不重要。 . (这是他们的责任吗?更多的是操作系统问题......)

JNotify在 linux 系统上也使用 inotify,所以这也不是选项。

不幸的是,映射驱动器监控似乎仅限于轮询器:

  • Apache VFS DefaultFileMonitor轮询目录(挂载共享)
  • 基于标准 Java API 的文件轮询器。
  • 带有 jCIFS 的自定义文件轮询器(因此共享不需要安装在主机上)

我可能会尝试使用 Apache VFS Monitor,因为它可以检测文件的创建、更新和删除。它需要挂载共享,但这让操作系统负责 CIFS 连接,而不是我的应用程序。

关于Java WatchService 在观看映射驱动器时不生成事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8476419/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com