用户名:ziyan120
比较文件的MD5即可
importj**a.io.File;
importj**a.io.FileInputStream;
importj**a.math.BigInteger;
importj**a.security.MessageDigest;
import问答j**a.util.h**ashMap;
importj**a.***.Map;
publicc防另坏据切历封旧去lassFileDigest{
/**
*获取单个文件的MD5值!
*@paramfile
*@return
*/
publicstaticStringgetFileMD5(Filefile){
if(!file.isFile()){
return**ll;
造}
MessageDi叶板约真烈乐晶gestdigest=**ll;
FileInputStreamin=**ll;
bytebuffer[]=newbyte[1024];
intlen;
try{
digest=MessageDigest.getInstance("MD5");
in=newFileInputStr培历eam(file);
while((len=***.read(buffer,0,1024))!=-1){
digest.up采婷date(buffer,0,len);
}
in.close();
}catch(Exceptione){
e.pri席一编换握植粮降在ntStackTrace()跳庆;
return**ll;
}
BigIntegerbigInt=newBigInt振弦浓eger(1,digest省班聚数齐汽威刑金.digest());
returnbigInt.to烟右国调派创右水String(16);
}
/**
*获取文件夹中文件的MD5值
*@paramfile
*@paramlistChild;true递归子目录中的文件
*@return
*/
publicstaticMap<String,String>getDirMD5(Filefile,booleanlistChild){
if(!file.isDirectory()哪部六够弱给观西经况){
returnnull;
}
//<filepath,md5>
Map<String,String>map=newh**ashMap<String,String>();
Stringmd5;
Filefiles[]=file.listFiles();
for(inti=0;i<files.length;i++){
Filef=files[i];
if(f.isDi商备如rectory()&&listChild){
map.putAll(getDirMD5(f,listChild));
}else{
md5=ge更评tFileMD5(f);
if(md5!=**ll){
map.put(f.getPath(),md5);
}
}
}
re便子方谈北记兴包矿阻似turnmap;
}
p说赶回故溶尼ublicstaticvoidmain(String[]args){
Filefile1影均代=newFile("a.txt");
Filefile2=newFile("b伟高富尽而植只击员验球.txt");
System容践良展卷草.out.println(getFileMD5(file1).equals(getFileMD5(file2)));
}
}