4

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


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

4

3 回答 3

1

也许解决方案就是这篇文章的答案。您可以尝试使用jpoller

于 2016-12-14T06:48:48.883 回答
1

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

于 2016-12-14T06:13:51.387 回答
0

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

文件#长度

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

于 2016-12-14T06:14:10.793 回答