如何确定文件当前是否在Java中增长(OS Independent)

我正在尝试找到一种跨平台的方法来可靠地判断文件是否已完成复制(通过外部进程).

以前,在OSX / Linux上,我只是在检查

File file = new File("path/to/file");
file.length()

然后等待几秒钟再次检查它,看它是否已经改变.

然而,这在Windows上不起作用,因为该方法总是返回完整文件的大小(即最终将被复制的内容).

我也尝试检查lastModified时间戳,但这似乎也没有改变.

最佳答案 一种选择是尝试使用“追加”FileOutputStream打开文件进行写入 – 如果可以这样做,则另一个进程也不太可能正在写入文件.当然,您不需要编写任何数据 – 只需创建流.

(已编辑删除使用lastModified的问题中的想法.)

点赞