比较Java中的文件?

比较Java中的文件?,java,file,compare,Java,File,Compare,如何在Java中比较任意类型的两个文件 我能够比较2个文本文件,但我需要比较任何类型的文件(如xls、doc、jpp…等) 我只需要一个布尔结果(对于任何类型的文件)来判断文件是否相同。您可以先比较文件长度,然后逐字节比较文件内容,发现差异后立即返回false public static boolean sameContent (File f1, File f2) throws IOException { if(f1.length()!=f2.length())return false;

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

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


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

您可以先比较文件长度,然后逐字节比较文件内容,发现差异后立即返回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比较的一个注释(在评论中建议):

  • 比较文件的md5是不可靠的,因为两个不同文件的md5可能是相同的(如果您运气不好)
  • 计算md5需要读取整个文件(+散列算法),因此效率较低

你可以做到。Goahead.你是如何比较文本文件的?您可以简单地按字节比较每种文件类型,这并不难……使用
md5sum
怎么样?这对你有用吗?没有检查md5sum。只检查文本文件为什么“太宽”?它简单、不含糊、清晰。我没有理由关闭它。它工作正常。谢谢。。