使用java中的WatchService检测文件完成情况

时间:2015-12-04 09:44:31

标签: java watchservice

我有一个正在不断写入的文件,而它是在watchService中注册的。 是否可以使用WatchEvent检测它是否已完成。

请注意,完整之后,我的意思是前一个写入文件的编写器已经完成,我希望没有其他人打开该文件并写入。

1 个答案:

答案 0 :(得分:1)

我在Windows paltform上遇到了同样的问题。 我试图使用超时解决它:例如,当超时1秒(自上次修改事件以来)时,我认为该文件已完成。但它不适用于大文件:我注意到在超时后触发了修改事件。 在我的应用程序中,我复制目录上的文件。我通过在我的文件副本之后复制临时文件来解决问题。在这种情况下,当为临时文件触发create事件时,第一个文件就完成了。

N.B:对于linux平台,我已经做了一些搜索,我发现使用renameTo()方法检查文件是否仍被进程锁定的建议。如果remaneTo()返回true,则表示文件已完成。 在我依赖Windows的项目中,我尝试了renameTo(),但是我得到了一个真值,而且文件不完整。