java 文件夹监控jnotify多次监听Modified

Herman_he 发布于 2011/09/27 16:49
阅读 5K+
收藏 0

在使用java做文件夹监听时遇到了一个问题,就是在监听到一个文件更改时会扫行4次Modified方法,这样我在Modified这个方面里做的文件解析操作也同样执行4次,因为我要监控的文件在10个左右,它每个文件都要执行4次,这样太废资源和时间了啊,有没有什么好的办法监听每个文件的改动只执行一次Modified方法????

谢谢!

加载中
0
Z
ZYud

不是会自动通知你的回调吗?

http://jnotify.sourceforge.net/sample.html

0
Herman_he
Herman_he

引用来自“ZYud”的答案

不是会自动通知你的回调吗?

http://jnotify.sourceforge.net/sample.html

是执行回调了啊,但是一个文件执行了多次回调啊,这样我在回调里写的解析操作要执行多次啊,我想让回调就执行一次啊?????
0
浪客Dandy
浪客Dandy

jnotify bug很多 我也遇到过,还有rename的问题

我现在改用了jpathwatch,稍微好点

总的来说java的watch service没一个好用的,连jdk7的我也测试了

我觉得这也和linux文件系统设计有缺陷有关

0
Herman_he
Herman_he

引用来自“浪客Dandy”的答案

jnotify bug很多 我也遇到过,还有rename的问题

我现在改用了jpathwatch,稍微好点

总的来说java的watch service没一个好用的,连jdk7的我也测试了

我觉得这也和linux文件系统设计有缺陷有关

jpathwatch我也试过一样,监控一个文件的修改也是执行三四次回调,你是怎么解决这个问题的啊

jpathwatch和jnotify都是基于事件驱动的啊,jdk7还没试过。我也试过线程轮寻,不过那个太费资源了啊,如果文件改动比较频繁的话,系统吃不消啊,没办法啊

你用jpathwatch怎么解决执行三四次回调问题的啊

0
Z
ZYud

引用来自“hld_hepeng”的答案

引用来自“ZYud”的答案

不是会自动通知你的回调吗?

http://jnotify.sourceforge.net/sample.html

是执行回调了啊,但是一个文件执行了多次回调啊,这样我在回调里写的解析操作要执行多次啊,我想让回调就执行一次啊?????

open有多个还是什么?

不行你就监控close_write就可以了吗.

请多程序都会这样操作.多次打开文件.不一定是系统的问题.

0
Herman_he
Herman_he

引用来自“ZYud”的答案

引用来自“hld_hepeng”的答案

引用来自“ZYud”的答案

不是会自动通知你的回调吗?

http://jnotify.sourceforge.net/sample.html

是执行回调了啊,但是一个文件执行了多次回调啊,这样我在回调里写的解析操作要执行多次啊,我想让回调就执行一次啊?????

open有多个还是什么?

不行你就监控close_write就可以了吗.

请多程序都会这样操作.多次打开文件.不一定是系统的问题.

我监控的是修改事件啊,好像没有close_write的吧

只有四个回调方法fileRenamed,fileModified,fileDeleted,fileCreated

fileCreated和fileDeleted回调时是只执行一次的,但如果一个文件有更改的话会执行多次fileModified回调,我想让这个回调只执行一次????

0
浪客Dandy
浪客Dandy

坦白的说我还没找到完美的解决方法,我现在在尝试调用inotifywait

然后解析命令行输出最为结果,还在尝试阶段

0
Herman_he
Herman_he

引用来自“浪客Dandy”的答案

坦白的说我还没找到完美的解决方法,我现在在尝试调用inotifywait

然后解析命令行输出最为结果,还在尝试阶段

那可怎么办啊,这个问题也困扰我很久了啊,怎么办呢??

0
Z
ZYud

只能做个延时处理.或者换种思路.你如果想当文件修改完成时做一些操作的话,不妨有close_write

0
浪客Dandy
浪客Dandy

java的inotify封装就没有带close write的,这主要是因为他们都想统一win mac linux的开发接口

我觉得至少对于linux而言 必须单独做 所以我在尝试inotify tools

说实话 在这方面windows api要强太多了

返回顶部
顶部