检查文件是否已被复制

时间:2012-05-23 18:58:00

标签: java file-io io file-handling

我正在编写一个小程序来复制文件。程序检查要复制的文件是否已复制到目标位置。

要验证是否存在相同的文件,我将比较以下两件事:

  1. 文件大小(来源和目标文件)。
  2. 上次修改时间戳。
  3. 但是,我在Java中遇到了以下问题:

    1. 使用Java IO(输入/输出流)复制文件时,File.length不会返回相同的数字(相差1)。
    2. 使用Java IO复制文件时,复制文件的最后修改时间戳是当前日期/时间而不是原始日期/时间。
    3. 请建议。

4 个答案:

答案 0 :(得分:3)

  1. 如果尺寸不同,则代码中会出现错误。我可以这么认为 你正在处理文本文件,并没有正确处理新的 线字符。如果您想复制文件,您应该使用 字节。显然这只是假设:你还没有发布任何内容 你的代码。
  2. 这是对的。新文件只是原始文件的副本。 其最后修改日期是文件的最后日期 修改,即你写完后。改变就是使用 File.setLastModifed()方法。

答案 1 :(得分:2)

通常你会计算原始文件的MD5总和,并将其与目标文件的MD5总和进行比较,如果等于,那么你就可以了。

其他简单的技巧是复制文件并在复制时附加后缀,在复制完成的过程之后,删除文件名后缀,这样在这种情况下你只检查文件是否存在。

希望这有帮助!

答案 2 :(得分:1)

您还需要复制属性,我知道Files类有一个复制属性选项:http://docs.oracle.com/javase/tutorial/essential/io/copy.html

答案 3 :(得分:0)

将一个文件复制到另一个文件中你可以使用任何类,但我不明白为什么必须使用时间戳来检查文件是否已被复制。

您可以检查目标文件和源文件的内容,如果匹配则复制文件,否则不复制文件

另一种方法是使用文件类的lastModified方法......第一种方法似乎是更好的选择