java - 如何找出一个文件当前是否在 Java 中增长(独立于操作系统)

标签 java windows file filesystems

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

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

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

然后等待几秒钟并再次检查它是否已更改。

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

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

最佳答案

一个选项是尝试打开文件进行写入,使用“附加”FileOutputStream - 如果您可以这样做,则不太可能另一个进程也在写入到文件。当然,您不需要写入任何数据 - 只需创建流即可。

(编辑以删除问题中已经存在的使用 lastModified 的想法。)

关于java - 如何找出一个文件当前是否在 Java 中增长(独立于操作系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12677460/

相关文章:

java - 找不到 ID 为 :' ' 的数据库实例。请指定一个有效的数据库实例

java - 从父类(super class)中调用随机生成的子类的方法

java - 无法使用 dropjava 命令从 Oracle 数据库中删除 jar

java - 在 finally 期间删除临时文件与在 catch 期间删除输出文件

windows - 在 Windows 中使用 lua os.execute 来启动一个程序,而不需要一闪而过的 CMD

windows - Windows 上的 Redmine 安装错误

php - FOSUserBundle 'Class ' FOS\UserBundle\FOSUserBundle' 在 app/AppKernel.php 中找不到的 Symfony 2.1 配置

java - 使用 xpath 操作 json 文件的有效方法?

python - 使用 python 3.x 将文件写入磁盘

java - 将sql输出保存在文本文件中