【问题标题】:Compare files in Java? [closed]比较Java中的文件? [关闭]
【发布时间】:2017-02-10 08:35:33
【问题描述】:

如何在 Java 中比较任意类型的两个文件?

我可以比较 2 个文本文件,但我需要比较任何类型的文件(如 xls、doc、jpp...等)

我只需要一个布尔结果(对于任何类型的文件)来判断文件是否相同。

【问题讨论】:

  • 你可以做到。前进。
  • 您如何比较文本文件?您可以简单地按字节比较每种文件类型,并不难...
  • 使用md5sum怎么样?这对你有用吗?
  • 没有检查 md5sum。只检查了文本文件
  • 为什么“太宽泛”?它简单、明确、明确。没有理由关闭它 IMO。

标签: java file compare


【解决方案1】:

可以先比较文件长度,再逐字节比较文件内容,发现有差异就返回false。

public static boolean sameContent (File f1, File f2) throws IOException {
    if(f1.length()!=f2.length())return false;
    FileInputStream fis1 = new FileInputStream(f1);
    FileInputStream fis2 = new FileInputStream(f2);
    try {
        int byte1;
        while((byte1 = fis1.read())!=-1) {
            int byte2 = fis2.read();
            if(byte1!=byte2)return false;
        }
    } finally {
        fis1.close();
        fis2.close();
    }
    return true;
}

关于 md5 比较的一点说明(建议在 cmets 中):

  • 比较文件的 md5 并不可靠,因为 2 个不同文件的 md5 可能相同(如果你不走运的话)。
  • 计算 md5 需要读取整个文件(+ 哈希算法),因此效率较低

【讨论】:

  • 完美运行。谢谢..
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
  • 2013-03-04
  • 1970-01-01
相关资源
最近更新 更多