Java读取文件MD5的两种方案
2015-11-22 16:57
585 查看
最近要弄一下Java读取文件MD5,注意这里是小文件,网上找了一下,有两种解决方案,一种是用MessageDigest来实现,另种是用org.apache.commons.codec.digest来实现,代码如下:
运行:
结果在官网提供的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
[java] view plaincopy package cdm; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.math.BigInteger; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; import org.apache.commons.codec.digest.*; import org.apache.commons.io.IOUtils; public class testMD5 { public static String getMd5ByFile(File file) throws FileNotFoundException { String value = null; FileInputStream in = new FileInputStream(file); try { MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length()); MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.update(byteBuffer); BigInteger bi = new BigInteger(1, md5.digest()); value = bi.toString(16); } catch (Exception e) { e.printStackTrace(); } finally { if(null != in) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } return value; } public static void main(String[] args) throws IOException { String path="E:\\commons-codec-1.9-bin.zip"; String v = getMd5ByFile(new File(path)); System.out.println("MD5:"+v.toUpperCase()); FileInputStream fis= new FileInputStream(path); String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis)); IOUtils.closeQuietly(fis); System.out.println("MD5:"+md5); //System.out.println("MD5:"+DigestUtils.md5Hex("WANGQIUYUN")); } }
运行:
结果在官网提供的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
相关文章推荐
- TestFrameWork API接口测试框架
- java--I/O流总结
- java 每日习题(九)从数据库中取数据
- JAVA语法基础之标识符和关键字
- java学习日记-------------------------------------贪吃蛇
- JAVA语法基础之标识符和关键字
- java中解析xml的四种方法
- Java中的clone方法 -- 原型模式
- Java I/O底层是如何工作的?
- Java语言的三大特性即是:封装、继承、多态
- Java命令行设置classpath路径
- Exception raised during rendering: java.lang.System.arraycopy([CI[CII)V
- SpringMVC适配器
- 深入研究java.lang.ThreadLocal类
- 【Eclipse_部署web项目篇】修改eclipse默认指向的WebContent目录作为启动运行加载
- Java 中如何实现(类似于C#中的OUT)的输出类型参数
- Java中的String为什么是不可变的?
- java.lang.String的 split方法用法总结
- java 获取网页指定内容
- eclipse配置scala 2.11插件