【发布时间】:2012-05-30 08:51:40
【问题描述】:
我正在编写一个小程序来复制文件。程序检查要复制的文件是否已经复制到目标位置。
为了验证是否存在相同的文件,我比较了以下两件事:
- 文件大小(源文件和目标文件)。
- 上次修改时间戳。
但是,我在 Java 中执行此操作时遇到以下问题:
- 使用 Java IO(输入/输出流)复制文件时,File.length 不会返回相同的数字(相差 1)。
- 使用 Java IO 复制文件时,复制文件的最后修改时间戳是当前日期/时间,而不是原始日期/时间。
请提出建议。
【问题讨论】:
-
为什么不检查新目的地的文件是否存在?
-
@Guillaume - 检查文件是否存在不足以确定文件是否已更改。
-
考虑查看 Ant 的 Copy 任务的源代码,因为它执行相同的操作。 ant.apache.org/manual/Tasks/copy.html
-
@Guillaume 这是要求,因为源文件夹正在逐步添加文件。当我的程序复制时,它会检查相同的文件(名称、大小和日期)是否相同,否则再次复制。
-
啊好吧,我明白了,我想你可以检查 md5sum 而不是 size !
标签: java file-io io file-handling