我试图找到一种跨平台的方式来可靠地告诉文件是否完成了复制(通过外部进程)。如何找出当前Java文件是否正在增长(与操作系统无关)
此前,OSX/Linux的我只是被检查
File file = new File("path/to/file");
file.length()
然后等待几秒钟,然后再检查它,看它是否已经改变。
但是,这在Windows上不起作用,因为该方法始终返回完整文件的大小(即最终一旦被复制它的大小)。
我也试过检查lastModified时间戳,但这并没有改变。
在任何操作系统上都没有这样的功能。你想做什么? –
你可以请求外部进程发布标志文件,一旦它完成写入数据到信号完成?这就是我通常会这样做的原因,或者要求外部数据提供商在交换馈送时等这样做。 – amphibient
您是否每次都创建一个新的文件对象?如果没有,请尝试一下,可能是您创建的File对象正在缓存上次修改时间。 – Brigham