JAVA计算文件的MD5值
2012-12-08 11:10
363 查看
import java.io.File;
import java.io.FileInputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
public class FileDigest {
public
static String
getFileMD5(File
file)
{
if (!file.isFile()){
return
null;
}
MessageDigest
digest = null;
FileInputStream
in=null;
byte buffer[] = new byte[1024];
int len;
try {
digest
= MessageDigest.getInstance("MD5");
in
= new FileInputStream(file);
while ((len
= in.read(buffer, 0, 1024)) !=
-1)
{
digest.update(buffer, 0,
len);
}
in.close();
} catch (Exception
e)
{
e.printStackTrace();
return
null;
}
BigInteger
bigInt = new BigInteger(1,
digest.digest());
return bigInt.toString(16);
}
public
static Map<String,
String> getDirMD5(File
file,boolean listChild)
{
if(!file.isDirectory()){
return
null;
}
//<filepath,md5>
Map<String,
String> map=new HashMap<String,
String>();
String
md5;
File
files[]=file.listFiles();
for(int i=0;i<files.length;i++){
File
f=files[i];
if(f.isDirectory()&&listChild){
map.putAll(getDirMD5(f,
listChild));
} else {
md5=getFileMD5(f);
if(md5!=null){
map.put(f.getPath(),
md5);
}
}
}
return map;
}
}
import java.io.FileInputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
public class FileDigest {
public
static String
getFileMD5(File
file)
{
if (!file.isFile()){
return
null;
}
MessageDigest
digest = null;
FileInputStream
in=null;
byte buffer[] = new byte[1024];
int len;
try {
digest
= MessageDigest.getInstance("MD5");
in
= new FileInputStream(file);
while ((len
= in.read(buffer, 0, 1024)) !=
-1)
{
digest.update(buffer, 0,
len);
}
in.close();
} catch (Exception
e)
{
e.printStackTrace();
return
null;
}
BigInteger
bigInt = new BigInteger(1,
digest.digest());
return bigInt.toString(16);
}
public
static Map<String,
String> getDirMD5(File
file,boolean listChild)
{
if(!file.isDirectory()){
return
null;
}
//<filepath,md5>
Map<String,
String> map=new HashMap<String,
String>();
String
md5;
File
files[]=file.listFiles();
for(int i=0;i<files.length;i++){
File
f=files[i];
if(f.isDirectory()&&listChild){
map.putAll(getDirMD5(f,
listChild));
} else {
md5=getFileMD5(f);
if(md5!=null){
map.put(f.getPath(),
md5);
}
}
}
return map;
}
}
相关文章推荐
- 解决spark-md5.js和java计算文件md5值不一致问题
- Java计算文件MD5值(支持大文件)
- js计算出来的文件md5值跟java计算出来的不一致
- java计算文件MD5值,比较两文件是否相同
- Java计算文件MD5值
- Java计算文件MD5值代码
- Java--计算文件md5值
- java计算文件的MD5值
- JAVA计算文件的MD5值
- 计算文件的MD5值(Java & Rust)
- java计算文件32位md5值
- Java计算文件的MD5值
- JAVA计算文件的crc32校验码
- 计算文件大小,java
- Java解析魔兽争霸3录像W3G文件(五):Action和APM计算
- 计算文件的MD5值
- C语言计算文件MD5值
- 大文件计算MD5值 ——Python
- Android开发--身高体重指数(BIM)计算--访问标识符号(android:id属性/XML说明文件与R.java资源文件/将字符串抽离XML/新增XML文件)
- 集算器用作Java结构化文件计算类库