【发布时间】:2012-09-22 13:10:54
【问题描述】:
我正在尝试找到一种跨平台的方法来可靠地判断文件是否已完成复制(通过外部进程)。
以前,我只是在 OSX/Linux 上检查
File file = new File("path/to/file");
file.length()
然后等待几秒钟并再次检查它是否已更改。
但是,这在 Windows 上不起作用,因为该方法总是返回完整文件的大小(即它最终将被复制一次的大小)。
我也试过检查 lastModified 时间戳,但这似乎也没有改变。
【问题讨论】:
-
任何操作系统都没有这样的功能。你想做什么?
-
您能否要求外部进程在完成将数据写入其中以表示完成后发布标志文件?这就是我在交换提要等时通常会这样做或要求外部数据提供者这样做的方式
-
你每次都创建一个新的文件对象吗?如果没有,请尝试,您正在创建的 File 对象可能正在缓存上次修改时间。
-
@foampile 不幸的是,外部过程完全超出了我们的控制和改变的能力
-
@Brigham 不幸的是没有帮助 - file.length 将在 Windows 上返回完整大小,无论何时创建 File 对象
标签: java windows file filesystems