Java web · 2016年7月29日 0

Java读取文件MD5的两种方案

最近要弄一下Java读取文件MD5,注意这里是小文件,网上找了一下,有两种解决方案,一种是用MessageDigest来实现,另种是用org.apache.commons.codec.digest来实现,代码如下:

  1. package cdm;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.math.BigInteger;
  7. import java.nio.MappedByteBuffer;
  8. import java.nio.channels.FileChannel;
  9. import java.security.MessageDigest;
  10. import org.apache.commons.codec.digest.*;
  11. import org.apache.commons.io.IOUtils;
  12. public class testMD5 {
  13.      public static String getMd5ByFile(File file) throws FileNotFoundException {
  14.             String value = null;
  15.             FileInputStream in = new FileInputStream(file);
  16.         try {
  17.             MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
  18.             MessageDigest md5 = MessageDigest.getInstance(“MD5”);
  19.             md5.update(byteBuffer);
  20.             BigInteger bi = new BigInteger(1, md5.digest());
  21.             value = bi.toString(16);
  22.         } catch (Exception e) {
  23.             e.printStackTrace();
  24.         } finally {
  25.                 if(null != in) {
  26.                     try {
  27.                     in.close();
  28.                 } catch (IOException e) {
  29.                     e.printStackTrace();
  30.                 }
  31.             }
  32.         }
  33.         return value;
  34.         }
  35.     public static void main(String[] args) throws IOException {
  36.         String path=“E:\\commons-codec-1.9-bin.zip”;
  37.         String v = getMd5ByFile(new File(path));
  38.         System.out.println(“MD5:”+v.toUpperCase());
  39.         FileInputStream fis= new FileInputStream(path);
  40.         String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis));
  41.         IOUtils.closeQuietly(fis);
  42.         System.out.println(“MD5:”+md5);
  43.         //System.out.println(“MD5:”+DigestUtils.md5Hex(“WANGQIUYUN”));
  44.     }
  45. }

运行:

结果在官网提供的MD5一致。

附commons-codec-1.9.jar下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi

如果要处理过G的文件,请参照:http://www.cnblogs.com/yaowukonga/p/3523668.html

Share this: