对于最近的项目,我需要在Windows上从java检测映射的Samba共享上的文件系统更改:创建,更新和删除。目前我正在使用文件夹轮询来维护文件列表及其修改后的时间戳以查找事件。
但我的问题是这个文件夹轮询只在特定时间(例如每10秒)查看一次文件夹,因此更新的文件可以在两次轮询之间更新两次而无需识别。
当文件事件在该mappep Samba共享上出现时,有没有办法从Java内的窗口获取事件?
谢谢!
答案 0 :(得分:1)
Java在当前的IO api中没有任何内容来处理来自操作系统的文件通知。
Java 7将有一个新的IO API JSR-203 ,其watch file API将使用原生 O / S通知或轮询如果不支持通知来检测文件更改。
与此同时,您可以查看是否有人实施了一个允许您通过JNI挂钩O / S通知的库。我认为IntelliJ IDEA为此目的使用本机库。
关注Sourceforge我发现 jfilenotify ,但我从未使用过它。
或者您可以提高采样频率(但这将开始锤击您的文件系统)或通过在文件名中添加版本号来更改文件的写出方式/文件夹,以便您可以轻松判断某些内容何时发生变化。
答案 1 :(得分:0)
根据this forum entry TeamDev JNIWrapper能够像我想要的那样做到这一点。我刚买了一份。谢谢你和
格尔茨, GHAD