import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 计算文件的MD5
*/
public class FileMD5 {
protected static char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
protected static MessageDigest messageDigest = null;
static{
try{
messageDigest = MessageDigest.getInstance("MD5");
}catch (NoSuchAlgorithmException e) {
System.err.println(FileMD5.class.getName()+"初始化失败,MessageDigest不支持MD5Util.");
e.printStackTrace();
}
}
/**
* 计算文件的MD5
* @param fileName 文件的绝对路径
* @return
* @throws IOException
*/
public static String getFileMD5String(String fileName) throws IOException{
File f = new File(fileName);
return getFileMD5String(f);
}
/**
* 计算文件的MD5,重载方法
* @param file 文件对象
* @return
* @throws IOException
*/
public static String getFileMD5String(File file) throws IOException{
FileInputStream in = new FileInputStream(file);
FileChannel ch = in.getChannel();
MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
messageDigest.update(byteBuffer);
return bufferToHex(messageDigest.digest());
}
private static String bufferToHex(byte bytes[]) {
return bufferToHex(bytes, 0, bytes.length);
}
private static String bufferToHex(byte bytes[], int m, int n) {
StringBuffer stringbuffer = new StringBuffer(2 * n);
int k = m + n;
for (int l = m; l < k; l++) {
appendHexPair(bytes[l], stringbuffer);
}
return stringbuffer.toString();
}
private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];
char c1 = hexDigits[bt & 0xf];
stringbuffer.append(c0);
stringbuffer.append(c1);
}
public static void main(String[] args) throws IOException {
String fileName = "E:\\lyyy.flv";
long start = System.currentTimeMillis();
System.out.println(getFileMD5String(fileName));
long end = System.currentTimeMillis();
System.out.println("Consume " + (end - start) + "ms");
}
}
原文地址:http://hi.baidu.com/chenxiaowen/blog/item/9a9cb6deb5c2e95dccbf1abe.html
分享到:
相关推荐
Java计算文件MD5值(支持大文件) package com.hthl.xxtd; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.MessageDigest; import org....
java实现的计算文件的md5值 工具类代码
java写的文件MD5码计算工具及其源码,采用netbeans开发工具;部署注意即可
Java 中文件的MD5和SHA-1的使用实例
解决java 与C# MD5 不一致问题
使用java 计算文件的MD5值,弥补了网上百度内容的计算错误,--如果第一位是0 会丢失的问题。
完美解决js的md5中文和java不一致的情况 java: public class TestController2 { public static void main(String args[]){ String a = "我是中国人"; a = DigestUtils.md5Hex(a); System.out.println(a); //a: ...
运用分段读取的方法可以大文件计算文件MD5和sha1的值,来比对两个文件是否完全相同
java源码,用来获得文件的MD5,如果电脑上没有MD5软件,可以用这个,一运行就知道MD5值是多少。 略作修改即可计算字符串的MD5值。
SHA1或MD5算法获取文件摘要值(JAVA)
MD5计算,可以将文件提取出摘要,进行比对,校验,实现指纹算法
纯java获取指定目录下的所有问价和目录,采用递归算法,如果是文件还能得到该文件的MD5值,两个文件夹中文件和目录进行比较,发现被篡改的文件和目录,返回比较后的结果。
Java程序。可以生成文件的MD5哈希值。生成的Hash值可保存到txt文件中。程序完全可运行。
使用Java语言,实现获取大文件文件流来计算md5
kettle利用JavaScript实现对字符串进行MD5加密
如何在不额外读流的情况下计算md5值(csdn)————程序
举个例子,你将一段话写在一个叫 readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。...
MD5文件效验码是一个判断文件是否是相同文件的途径,通过比较两个文件的Md5效验码是否相同来精确判断两个文件是否相同
通过MD5,计算文件的校验和.程序使用JAVA语言编写,用户可方便地改为C#或其他语言。
文件md5校验码计算命令行程序C++源代码,csdn搜到一个android JAVA版的,不合我的口味. 代码主要来自网上流传,相应版权归原作者所有. 我修正了若干缓冲区尺寸溢出错误.