如何用Java判断两个文件内容是否相同?

查看:305
本文介绍了如何用Java判断两个文件内容是否相同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

有两个任意格式的文件。

如何用Java判断两个文件是否一样?
或者内容是一样的(不考虑文件名等信息)。

需要考虑文件比较大的情况下的效率问题。

解决方案

如果你维护这些文件列表,并且后期会不定期进行比较,也就是确定一个文件有多次被比较的机会。可以计算这些文件的MD5并缓存起来,后期直接用MD5进行比较。
如果只是临时性的随机选两个文件进行比较,可以先比较文件大小,如果文件大小不同就说明文件内容不相同。如果大小相等的话,可以打开这两个文件的输入流,字节逐一比较,如果中间有不相等的字节就说明两个文件不相等,然后直接退出比较,需要注意的是文件流要缓冲(BufferedInputStream)。
之所以不推荐MD5是因为MD5也需要根据文件全部内容计算散列值,可是实际上中途发现有一个字节不相同就可以判定这两个文件是不同的,根本没必要去读取文件的全部内容。

        //in1, in2为两个文件的输入流,最后注意流的关闭
        int c;
        while ((c = in1.read()) != -1) {
            if (in2.read() != c) return false;
        }
        return true;

这篇关于如何用Java判断两个文件内容是否相同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆