Linux + Java + Windows:检查文件是否完全复制

时间:2016-12-14 06:06:21

标签: java linux file-copying fileobserver

我有一个Java应用程序,它监视目录中的新文件并处理它在目录中看到的任何新文件。 应用程序需要在linux和windows环境下运行。问题出在Linux上,当用户手动复制目录中的文件时,应用程序会在文件完全复制之前选择到目录。   我已经尝试使用各种方法锁定文件,但即使文件仍被Linux系统复制,应用程序也能够获取文件锁定。我还考虑使用 lsof 命令检查文件,但它是特定于Linux的,所以我试图避免这种情况。

有人可以建议一种方法来阻止应用程序选择不完整的文件吗? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

也许解决方案是this帖子的答案。您可以尝试使用jpoller

答案 1 :(得分:0)

您可以在某个时间间隔(例如2秒)检查文件大小,如果不同,则复制文件,如果没有,那么您可以去:)

答案 2 :(得分:0)

您可以实现此目的的一种方法是,当您的程序检测到目录中存在新文件时,它可以将该文件添加到列表中,并使用以下方法定期检查列表中每个元素的文件大小: / p>

文件#长度

如果在一段时间后文件大小没有改变,那么理论上应该将文件完全复制并刷新到目录。