在 Windows 上使用 Java 检测 Samba 共享上的文件系统更改
题
对于最近的项目,我需要从 Windows 上的 java 检测映射的 Samba 共享上的文件系统更改:创建、更新和删除。目前,我正在使用文件夹轮询,它维护文件列表及其修改的时间戳来查找事件。
但我的问题是,此文件夹轮询仅在特定时间(例如每 10 秒)查看该文件夹,因此更新的文件可以在两次轮询之间更新两次而不会被识别。
每当 mappep Samba 共享上发生文件事件时,是否有任何方法可以从 Java 内部的窗口获取事件?
谢谢!
解决方案
Java 在当前的 IO api 中没有任何东西来处理来自操作系统的文件通知。
Java 7 将有一个新的 IO API JSR-203 有一个 监视文件 API 要么使用本机 操作系统通知 或者 轮询 如果不支持通知来检测文件更改。
同时,您可以查看是否有人实现了一个库,允许您通过 JNI 连接到操作系统通知。我认为 IntelliJ IDEA 使用本机库来实现此目的。
在 Sourceforge 上我发现 j文件通知 但我从来没有用过它。
或者你可以 增加采样频率 (但这会开始影响你的文件系统)或者通过添加一个来改变你的文件的写出方式 版本号 到文件名/文件夹,以便您可以轻松地知道什么时候发生了变化。
不隶属于 StackOverflow