1

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

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

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

谢谢!

4

2 回答 2

1

Java 在当前的 IO api 中没有任何东西来处理来自 O/S 的文件通知。

Java 7 将有一个新的 IO API JSR-203,它有一个监视文件 API ,如果不支持通知来检测文件更改,它将使用本机O/S 通知轮询。

与此同时,您可以查看是否有人实现了一个允许您通过 JNI 挂钩到 O/S 通知的库。我认为 IntelliJ IDEA 为此目的使用了本机库。

在 Sourceforge 上我找到了 jfilenotify但我从未使用过它。

或者,您可以增加采样频率(但这会开始影响您的文件系统)或通过在文件名/文件夹中添加版本号来更改文件的写入方式,以便您可以轻松判断何时发生了更改。

于 2010-03-08T08:54:23.190 回答
0

根据这个论坛条目,TeamDev JNIWrapper能够像我想要的那样做到这一点。我刚买了一本。谢谢你然后

格瑞兹,GHad

于 2010-03-08T09:30:01.110 回答