java如何快速比较两个文件是否相同
在一些网盘和邮箱中,上传文件时,会检查服务器是否已经有了,如果已经有了则无需上传.这是如何实现的,我觉得要比较完全相同,必然一个个字节比较,这样的速度和直接上传是一样的啊...
在一些网盘和邮箱中,上传文件时,会检查服务器是否已经有了,如果已经有了则无需上传.
这是如何实现的,我觉得要比较完全相同,必然一个个字节比较,这样的速度和直接上传是一样的啊.
那些网盘用的什么算法?有公开代码么
不是java实现的也可以(有些是JS?) 展开
这是如何实现的,我觉得要比较完全相同,必然一个个字节比较,这样的速度和直接上传是一样的啊.
那些网盘用的什么算法?有公开代码么
不是java实现的也可以(有些是JS?) 展开
8个回答
展开全部
计算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的 内容相同。通过这个就,网盘就可以确定是否上传了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用Apache common codec 库 计算一下 md5或sha1,相同的文件md5/sha1 也相同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好使用shell脚本,一行搞定,comm命令
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-10
展开全部
看文件名就好了!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询