我正在编写一个小程序来复制文件。程序检查要复制的文件是否已经复制到目标位置。
为了验证是否存在相同的文件,我比较了以下两件事:
- 文件的大小(源文件和目标文件)。
- 上次修改的时间戳。
但是,我在 Java 中执行此操作时遇到以下问题:
- 当使用 Java IO(输入/输出流)复制文件时,File.length 不会返回相同的数字(相差 1)。
- 使用 Java IO 复制文件时,复制文件的最后修改时间戳是当前日期/时间,而不是原始日期/时间。
请建议。
我正在编写一个小程序来复制文件。程序检查要复制的文件是否已经复制到目标位置。
为了验证是否存在相同的文件,我比较了以下两件事:
但是,我在 Java 中执行此操作时遇到以下问题:
请建议。
File.setLastModifed()
方法。通常你会计算原始文件的 MD5 和并将其与目标文件的 MD5 和进行比较,如果它们相等,那么你很高兴。
其他简单的技术是复制文件并在复制时附加一个后缀,在复制它的过程完成后,删除文件名上的后缀,这样在这种情况下您只需检查文件是否存在。
希望这可以帮助!
您还需要复制属性,我知道 Files 类有一个复制属性选项:http ://docs.oracle.com/javase/tutorial/essential/io/copy.html
要将一个文件复制到另一个文件中,您可以使用任何类,但我不明白为什么 id 必须使用时间戳来检查文件是否已被复制。
您可以检查目标文件和源文件的内容,如果它们匹配,则复制文件,否则不复制文件
另一种方法是使用文件类的 lastModified 方法......第一个似乎是更好的选择