在Windows上检测与Java上的Samba共享的文件系统更改

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

但我的问题是,这个文件夹轮询只偷看到文件夹在某些时候(例如每10秒),所以更新的文件可以更新两次民意调查之间没有意识到。

当在mappep Samba共享上发生文件事件时,有没有办法从Java内部的窗口获取事件?

谢谢!

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

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

在此期间,您可以查看是否有人实施了一个允许您通过JNI挂接到O / S通知的库。 我认为IntelliJ IDEA使用本地lib来达到这个目的。

看Sourceforge我发现jfilenotify,但我从来没有用过它。

或者,你可以增加你的采样频率 (但是这将开始锤击你的文件系统),或者通过向文件名/文件夹添加一个版本号来改变你的文件的写入方式,这样你就可以很容易地知道什么时候发生了变化。

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

Greetz,GHad