我正在 java(1.6) 中编写一个目录监视实用程序,使用按一定时间间隔进行轮询lastModified
长值作为变化的指示。我发现当我的轮询间隔很小时(秒)并且复制的文件很大时,会在实际完成文件复制之前触发更改事件。
我想知道是否有办法可以找到文件的状态,例如传输中、完成等。
环境:Java 1.6;预计可在 Windows 和 Linux 上运行。
我过去使用过两种与平台无关的方法。
1/ 这是用于 FTP 传输,我控制放置的内容,因此它可能不直接相关。
基本上,无论放置文件file.txt
完成后,还会放置一个名为的小(可能是零字节)虚拟文件file.txt.marker
(例如)。
这样,监控工具只需查找出现的标记文件,当出现时,它就知道真正的文件是完整的。然后它可以处理真实文件并删除标记。
2/ 持续时间不变。
让你的监控程序等待,直到文件在 N 秒内没有变化(其中 N 合理地保证足够大,使得文件will就完事了)。
例如,如果文件大小在 60 秒内没有更改,则很有可能它已完成。
仅仅因为没有任何活动就认为文件已完成,以及在文件完成后才可以开始处理它之间存在一个平衡行为。与 FTP 相比,本地复制的问题要小一些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)