我正在尝试找到一种跨平台的方式来可靠地判断文件是否已完成复制(通过外部进程)。
以前,在 OSX/Linux 上我只是在检查
File file = new File("path/to/file");
file.length()
然后等待几秒钟并再次检查它是否已更改。
然而,这在 Windows 上不起作用,因为该方法总是返回完整文件的大小(即它最终将在复制后的大小)。
我也试过检查 lastModified 时间戳,但这似乎也没有改变。
最佳答案
一个选项是尝试打开文件进行写入,使用“附加”FileOutputStream
- 如果您可以这样做,则不太可能另一个进程也在写入到文件。当然,您不需要写入任何数据 - 只需创建流即可。
(编辑以删除问题中已经存在的使用 lastModified
的想法。)
关于java - 如何找出一个文件当前是否在 Java 中增长(独立于操作系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12677460/