您的位置:首页 > 编程语言 > Java开发

获取大文件MD5值(JAVA)

2012-10-12 15:54 465 查看
package com.topcheer;

import org.apache.commons.codec.binary.Hex;

import org.apache.commons.codec.digest.DigestUtils;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

/**

 * 计算大文件MD5 

 *  David  2012-10-12

 */

public class GetBigFileMD5 {

   

    static MessageDigest MD5 = null;

    static {

        try {

        MD5 = MessageDigest.getInstance("MD5");

        } catch (NoSuchAlgorithmException ne) {

        ne.printStackTrace();

        }

    }

    /**

     * 对一个文件获取md5值

     * @return md5串

     */

    public static String getMD5(File file) {

        FileInputStream fileInputStream = null;

        try {

        fileInputStream = new FileInputStream(file);

            byte[] buffer = new byte[8192];

            int length;

            while ((length = fileInputStream.read(buffer)) != -1) {

            MD5.update(buffer, 0, length);

            }

            return new String(Hex.encodeHex(MD5.digest()));

        } catch (FileNotFoundException e) {

        e.printStackTrace();

            return null;

        } catch (IOException e) {

        e.printStackTrace();

            return null;

        } finally {

            try {

                if (fileInputStream != null)

                fileInputStream.close();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

    /**

     * 求一个字符串的md5值

     * @param target 字符串

     * @return md5 value

     */

    public static String MD5(String target) {

        return DigestUtils.md5Hex(target);

    }

    public static void main(String[] args){

   

    long beginTime =System.currentTimeMillis();

      File fileZIP = new File("D:/TEST/IMAGE2.zip");

      String md5=getMD5(fileZIP);

      long endTime =System.currentTimeMillis();

     System.out.println("MD5:"+md5+"\n time:"+((endTime-beginTime)/1000)+"s");

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java string buffer null file byte