`

java计算过G文件md5 值计算

阅读更多

原文链接:http://www.cnblogs.com/yaowukonga/p/3523668.html

 

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)+"毫秒");

    }

}

分享到:
评论

相关推荐

    JSP手机语音验证码接口调用例子.rar

     digest,是最新一次计算结果之2进制内部表示,表示128bit之MD5值.  getMD5ofStr是类MD5最主要之公共方法,入口参数是你想要进行MD5变换之字符串  返回之是变换完之结果,这个结果是从公共成员digestHexStr取得...

    springboot开发在线网盘管理系统【完整sql+参考源码】

    1:系统在上传文件时自动计算文件的md5值,并且检查该值是否存在,若存在则文件不再上传到服务器,直接进行引用原有的文件。 2:定时器定时检查限时分享的文件是否过期。 3:网盘目录结构可无限制层级创建,保存移动...

    基于springboot开发在线网盘管理系统【源码+sql】

    1:系统在上传文件时自动计算文件的md5值,并且检查该值是否存在,若存在则文件不再上传到服务器,直接进行引用原有的文件。 2:定时器定时检查限时分享的文件是否过期。 3:网盘目录结构可无限制层级创建,保存移动...

    A星算法Java实现+源代码+文档说明

    &lt;项目介绍&gt; A星算法Java实现+源代码+文档说明 A星算法Java实现 一、适用场景 在一张地图中,绘制从起点移动到终点的最优路径,...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    基于知识图谱的中文症状问答系统,前端vue,后端springboot+源代码+文档说明

    基于知识图谱的中文症状问答系统,前端vue.js,后端springboot 开发语言是java,运行环境是windows 用到的技术:word2vec,doc2vec,编辑...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

    基于SpringBoot+Layui在线电子商城购物网站+源代码+文档说明+数据库.zip

    基于SpringBoot+Layui在线电子商城购物网站设计毕业源码案例设计 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的,其他...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    (23届高分毕业设计)基于Springboot+Vue实现的知识图谱的中文症状问答系统前后端分离项目+源代码+文档说明+数据

    &lt;项目介绍&gt; 基于知识图谱的中文症状问答系统,前端vue.js,后端springboot 开发语言是java,运行环境是windows ...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    基于SSM框架演唱会网上订票系统+源代码+文档说明

    # 项目名称 [含论文+答辩PPT+任务书+源码等]基于SSM框架演唱会网上订票系统 # 系统介绍 后台框架:Spring、SpringMVC、MyBatis...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    MySQL5.1参考手册官方简体中文版

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    mysql官方中文参考手册

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    MYSQL中文手册

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装...

    MySQL 5.1参考手册中文版

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装...

    MySQL 5.1参考手册

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    最新Delphi XE2 正式版破解程序

    Delphi XE2 正式版的破解...文件大小: 2.33G MD5: de8b9f897e2ad678643b64898470b707 Delphi Prism XE2 - ISO 1.28G http://altd.embarcadero.com/download/prism/xe2/prism_xe2_win.iso RadPHP XE2 - ISO 343M ...

    MySQL 5.1参考手册 (中文版)

    2.1.4. 通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装器安装MySQL ...

    mysql5.1中文手册

    通过MD5校验和或GnuPG验证软件包的完整性 2.1.5. 安装布局 2.2. 使用二进制分发版的标准MySQL安装 2.3. 在Windows上安装MySQL 2.3.1. Windows系统要求 2.3.2. 选择安装软件包 2.3.3. 用自动安装...

Global site tag (gtag.js) - Google Analytics