对于最近的项目,我需要从 Windows 上的 java 检测映射的 Samba 共享上的文件系统更改:创建、更新和删除。目前,我正在使用文件夹轮询,它维护文件列表及其修改的时间戳来查找事件。

但我的问题是,此文件夹轮询仅在特定时间(例如每 10 秒)查看该文件夹,因此更新的文件可以在两次轮询之间更新两次而不会被识别。

每当 mappep Samba 共享上发生文件事件时,是否有任何方法可以从 Java 内部的窗口获取事件?

谢谢!

有帮助吗?

解决方案

Java 在当前的 IO api 中没有任何东西来处理来自操作系统的文件通知。

Java 7 将有一个新的 IO API JSR-203 有一个 监视文件 API 要么使用本机 操作系统通知 或者 轮询 如果不支持通知来检测文件更改。

同时,您可以查看是否有人实现了一个库,允许您通过 JNI 连接到操作系统通知。我认为 IntelliJ IDEA 使用本机库来实现此目的。

在 Sourceforge 上我发现 j文件通知 但我从来没有用过它。

或者你可以 增加采样频率 (但这会开始影响你的文件系统)或者通过添加一个来改变你的文件的写出方式 版本号 到文件名/文件夹,以便您可以轻松地知道什么时候发生了变化。

其他提示

根据 此论坛条目 团队开发 JNI包装器 有能力做到我想要的那样。我刚刚购买了一本。谢谢你然后

engerz,ghad

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top