java如何快速比较两个文件是否相同

在一些网盘和邮箱中,上传文件时,会检查服务器是否已经有了,如果已经有了则无需上传.这是如何实现的,我觉得要比较完全相同,必然一个个字节比较,这样的速度和直接上传是一样的啊... 在一些网盘和邮箱中,上传文件时,会检查服务器是否已经有了,如果已经有了则无需上传.
这是如何实现的,我觉得要比较完全相同,必然一个个字节比较,这样的速度和直接上传是一样的啊.
那些网盘用的什么算法?有公开代码么
不是java实现的也可以(有些是JS?)
展开
 我来答
terry_fy
推荐于2020-01-08 · TA获得超过331个赞
知道小有建树答主
回答量:192
采纳率:50%
帮助的人:123万
展开全部

计算MD5或SHA-1,一样的就是同一个文件

下面的代码,不需要额外使用第三方组件,且支持超大文件

// 计算文件的 MD5 值
publicstatic String getFileMD5(File file) {
    if (!file.isFile()) {
        return null;
    }
    MessageDigest digest = null;
    FileInputStream in = null;
    byte buffer[] = newbyte[8192];
    int len;
    try {
        digest =MessageDigest.getInstance("MD5");
        in = new FileInputStream(file);
        while ((len = in.read(buffer)) != -1) {
            digest.update(buffer, 0, len);
        }
        BigInteger bigInt = new BigInteger(1, digest.digest());
        return bigInt.toString(16);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    } finally {
        try {
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
}


// 计算文件的 SHA-1 值
publicstatic String getFileSha1(File file) {
    if (!file.isFile()) {
        return null;
    }
    MessageDigest digest = null;
    FileInputStream in = null;
    byte buffer[] = newbyte[8192];
    int len;
    try {
        digest =MessageDigest.getInstance("SHA-1");
        in = new FileInputStream(file);
        while ((len = in.read(buffer)) != -1) {
            digest.update(buffer, 0, len);
        }
        BigInteger bigInt = new BigInteger(1, digest.digest());
        return bigInt.toString(16);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    } finally {
        try {
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
匿名用户
2014-01-10
展开全部
每个文件都可以转化为md5 的标识。两个内容完全相同的文件,他转化为md5的 内容相同。通过这个就,网盘就可以确定是否上传了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2014-01-10 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1953万
展开全部
使用Apache common codec 库 计算一下 md5或sha1,相同的文件md5/sha1 也相同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友014b428
2014-01-10 · 超过10用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:48.4万
展开全部
最好使用shell脚本,一行搞定,comm命令
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-01-10
展开全部
看文件名就好了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式