java 文件md5计算_java计算过G文件md5 值计算

1 packageio.bigdata;2

3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.IOException;6 importjava.io.InputStream;7 importjava.security.MessageDigest;8 importjava.security.NoSuchAlgorithmException;9 importjava.security.Provider;10 importjava.security.Security;11 importjava.util.HashSet;12 importjava.util.Iterator;13 importjava.util.Set;14

15 importorg.apache.commons.codec.digest.DigestUtils;16

17 public classMd5CaculateUtil {18

19 privateMd5CaculateUtil(){20

21 }22

23 private static char[] hexChar ={24 '0','1','2','3','4','5','6','7','8','9',25 'a','b','c','d','e','f'

26 };27

28 public static String getHash(String fileName,String hashType) throwsIOException, NoSuchAlgorithmException{29

30 File f = newFile(fileName);31 System.out.println(" -------------------------------------------------------------------------------");32 System.out.println("|当前文件名称:"+f.getName());33 System.out.println("|当前文件大小:"+(f.length()/1024/1024)+"MB");34 System.out.println("|当前文件路径[绝对]:"+f.getAbsolutePath());35 System.out.println("|当前文件路径[---]:"+f.getCanonicalPath());36 System.out.println(" -------------------------------------------------------------------------------");37

38 InputStream ins = newFileInputStream(f);39

40 byte[] buffer = new byte[8192];41 MessageDigest md5 =MessageDigest.getInstance(hashType);42

43 intlen;44 while((len = ins.read(buffer)) != -1){45 md5.update(buffer, 0, len);46 }47

48 ins.close();49 //也可以用apache自带的计算MD5方法

50 returnDigestUtils.md5Hex(md5.digest());51 //自己写的转计算MD5方法52 //return toHexString(md5.digest());

53 }54

55 public staticString getHash2(String fileName){56 File f = newFile(fileName);57 returnString.valueOf(f.lastModified());58 }59

60

61 protected static String toHexString(byte[] b){62 StringBuilder sb = new StringBuilder(b.length*2);63 for(int i=0;i>> 4]);65 sb.append(hexChar[b[i] & 0x0f]);66 }67 returnsb.toString();68 }69

70 /*

71 * 获取MessageDigest支持几种加密算法72 */

73 @SuppressWarnings({ "rawtypes", "unchecked"})74 private staticString[] getCryptolmpls(String serviceType){75

76 Set result = newHashSet();77 //all providers

78 Provider[] providers =Security.getProviders();79 for(int i=0;i

81 Set keys =providers[i].keySet();82 for(Iterator it =keys.iterator();it.hasNext();){83 String key =it.next().toString();84 key = key.split(" ")[0];85

86 if(key.startsWith(serviceType+".")){87 result.add(key.substring(serviceType.length()+1));88 }else if(key.startsWith("Alg.Alias."+serviceType+".")){89 result.add(key.substring(serviceType.length()+11));90 }91 }92 }93 return (String[]) result.toArray(newString[result.size()]);94 }95

96

97 public static void main(String[] args) throwsException, Exception {98 //调用方法99 //String[] names = getCryptolmpls("MessageDigest");100 //for(String name:names){101 //System.out.println(name);102 //}

103 long start =System.currentTimeMillis();104 System.out.println("开始计算文件MD5值,请稍后...");105 String fileName = "E:\\Office_2010_Toolkit_2.2.3_XiaZaiBa.zip";106 String fileName = "E:\\SoTowerStudio-3.1.0.exe";

107 String hashType = "MD5";108 String hash =getHash(fileName,hashType);109 System.out.println("MD5:"+hash);110 long end =System.currentTimeMillis();111 System.out.println("一共耗时:"+(end-start)+"毫秒");112 }113 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值