package io.bigdata;

 import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Security;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set; import org.apache.commons.codec.digest.DigestUtils; public class Md5CaculateUtil { private Md5CaculateUtil(){ } private static char[] hexChar = {
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f'
}; public static String getHash(String fileName,String hashType) throws IOException, NoSuchAlgorithmException{ File f = new File(fileName);
System.out.println(" -------------------------------------------------------------------------------");
System.out.println("|当前文件名称:"+f.getName());
System.out.println("|当前文件大小:"+(f.length()/1024/1024)+"MB");
System.out.println("|当前文件路径[绝对]:"+f.getAbsolutePath());
System.out.println("|当前文件路径[---]:"+f.getCanonicalPath());
System.out.println(" -------------------------------------------------------------------------------"); InputStream ins = new FileInputStream(f); byte[] buffer = new byte[8192];
MessageDigest md5 = MessageDigest.getInstance(hashType); int len;
while((len = ins.read(buffer)) != -1){
md5.update(buffer, 0, len);
} ins.close();
// 也可以用apache自带的计算MD5方法
return DigestUtils.md5Hex(md5.digest());
// 自己写的转计算MD5方法
// return toHexString(md5.digest());
} public static String getHash2(String fileName){
File f = new File(fileName);
return String.valueOf(f.lastModified());
} protected static String toHexString(byte[] b){
StringBuilder sb = new StringBuilder(b.length*2);
for(int i=0;i<b.length;i++){
sb.append(hexChar[(b[i] & 0xf0) >>> 4]);
sb.append(hexChar[b[i] & 0x0f]);
}
return sb.toString();
} /*
* 获取MessageDigest支持几种加密算法
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
private static String[] getCryptolmpls(String serviceType){ Set result = new HashSet();
// all providers
Provider[] providers = Security.getProviders();
for(int i=0;i<providers.length;i++){
// get services provided by each provider
Set keys = providers[i].keySet();
for(Iterator it = keys.iterator();it.hasNext();){
String key = it.next().toString();
key = key.split(" ")[0]; if(key.startsWith(serviceType+".")){
result.add(key.substring(serviceType.length()+1));
}else if(key.startsWith("Alg.Alias."+serviceType+".")){
result.add(key.substring(serviceType.length()+11));
}
}
}
return (String[]) result.toArray(new String[result.size()]);
} public static void main(String[] args) throws Exception, Exception {
// 调用方法
// String[] names = getCryptolmpls("MessageDigest");
// for(String name:names){
// System.out.println(name);
// }
long start = System.currentTimeMillis();
System.out.println("开始计算文件MD5值,请稍后...");
String fileName = "E:\\Office_2010_Toolkit_2.2.3_XiaZaiBa.zip";
//// String fileName = "E:\\SoTowerStudio-3.1.0.exe";
String hashType = "MD5";
String hash = getHash(fileName,hashType);
System.out.println("MD5:"+hash);
long end = System.currentTimeMillis();
System.out.println("一共耗时:"+(end-start)+"毫秒");
}
}

开始计算文件MD5值,请稍后...
-------------------------------------------------------------------------------
|当前文件名称:Office_2010_Toolkit_2.2.3_XiaZaiBa.zip
|当前文件大小:2437MB
|当前文件路径[绝对]:E:\Office_2010_Toolkit_2.2.3_XiaZaiBa.zip
|当前文件路径[---]:E:\Office_2010_Toolkit_2.2.3_XiaZaiBa.zip
-------------------------------------------------------------------------------
MD5:b1d269391c87942e5bb32b575baa0d79
一共耗时:18794毫秒

参考文章:http://sziitjiang.iteye.com/blog/1702961

java计算过G文件md5 值计算的更多相关文章

  1. 利用python计算windows全盘文件md5值的脚本

    import hashlib import os import time import configparser import uuid def test_file_md5(file_path): t ...

  2. 获取文件MD5值(JS、JAVA)

    文章HTML代码翻译于地址:https://www.cnblogs.com/linyihai/p/7040786.html           文件MD5有啥用?                  文 ...

  3. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  4. 基于js-spark-md5前端js类库,快速获取文件Md5值

    js-spark-md5是歪果仁开发的东西,有点多,但是我们只要一个js文件即可,具体类包我存在自己的oschina上,下载地址:https://git.oschina.net/jianqingwan ...

  5. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  6. QT 获取文件MD5值

    /* 方法1 */ QFile theFile(fileNamePath); theFile.open(QIODevice::ReadOnly); QByteArray ba = QCryptogra ...

  7. C# 获取文件MD5值的方法

    可用于对比文件是否相同 /// <summary> /// 获取文件MD5值 /// </summary> /// <param name="fileName& ...

  8. C#统计目录中文件MD5值

    1. [代码]统计目录中文件MD5值 using System.IO;using System.Security.Cryptography;using System.Collections;using ...

  9. Java计算文件MD5值(支持大文件)

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.securit ...

随机推荐

  1. fl,flash,mx包的区别

    在ActionScript项目中还真是不能使用mx包中的UI组件.           Adobe官方论坛上有一个帖子讲述了这个问题,大致意思是说:你要使用mx包中像Button这样的UI组件都是从U ...

  2. android147 360 程序锁fragment

    package com.itheima.mobileguard.fragment; import java.util.ArrayList; import java.util.List; import ...

  3. mysql升级小结和mysql_upgrade的用途

    http://blog.itpub.net/15480802/viewspace-1412259/ mysql升级 1 升级方式 分为In-place和out-of-place,前者直接覆盖当前版本, ...

  4. LINUX 内核导论

    http://blog.csdn.net/ljy1988123/article/category/1490573/2

  5. Jquery 表格固定表头

    网上找了好多现成的.结果没一个能成.只得自己动手. (function($){ $.fn.fixHeader = { init : function(obj){ var p = obj.parent( ...

  6. 十六款值得关注的NoSQL与NewSQL数据库--转载

    原文地址:http://tech.it168.com/a2014/0929/1670/000001670840_all.shtml [IT168 评论]传统关系型数据库在诞生之时并未考虑到如今如火如荼 ...

  7. [Qt5] 减少dll依赖和大小(特别是webkit的大小和依赖)

    Qt5的依赖太多, 而且很dll非常大. 折腾了好久, 摸索了一些精简的方法. webkit是个非常蛋疼的东西, 依赖超多, 又很庞大. 所以需不需要webkit是完全不同的. 如何编译Qt5可以参考 ...

  8. The _imageingft C module is not installed

    遇到的问题如图所示,使用的方法: 下载地址:http://effbot.org/downloads 并没有解决,有人用这样的方法成功了,只能说很遗憾,我并没有成功 大神给的解决办法,不要再win平台下 ...

  9. ORACLE临时表 转 学习用

    转:http://www.2cto.com/database/201210/163979.html 临时表:像普通表一样,有结构,但是对数据的管理上不一样,临时表存储事务或会话的中间结果集,临时表中保 ...

  10. poj3393[模拟题]

    Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...