JAVA生成文件的md5校验值
这里使用了lombok打印日志,也可以不用
- 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 lombok.extern.slf4j.Slf4j;
- /**
- * author yvioo
- */
- @Slf4j
- public class MD5Util {
- /**
- * 生成文件的md5校验值
- *
- * @param path 文件路径
- * @return 文件md5校验值
- * @throws IOException
- * @throws NoSuchAlgorithmException
- */
- public static String getFileMD5String(String path){
- InputStream fis = null;
- MessageDigest messagedigest = null;
- try {
- messagedigest = MessageDigest.getInstance("md5");
- File file = new File(path);
- if(!file.exists() || !file.isFile()) {
- log.error("不存在或不是一个文件");
- return "";
- }
- fis = new FileInputStream(file);
- byte[] buffer = new byte[1024];
- int numRead = 0;
- while ((numRead = fis.read(buffer)) > 0) {
- messagedigest.update(buffer, 0, numRead);
- }
- }catch (IOException e) {
- e.printStackTrace();
- }catch (NoSuchAlgorithmException e){
- e.printStackTrace();
- }finally {
- try {
- if(fis != null) {
- fis.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return bufferToHex(messagedigest.digest());
- }
- private static String bufferToHex(byte bytes[]) {
- return bufferToHex(bytes, 0, bytes.length);
- }
- private static String bufferToHex(byte bytes[], int m, int n) {
- StringBuffer stringbuffer = new StringBuffer(2 * n);
- int k = m + n;
- for (int l = m; l < k; l++) {
- appendHexPair(bytes[l], stringbuffer);
- }
- return stringbuffer.toString();
- }
- /**
- * 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,apache校验下载的文件的正确性用的就是默认的这个组合
- */
- protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
- private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
- char c0 = hexDigits[(bt & 0xf0) >> 4];// 取字节中高 4 位的数字转换, >>> 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同
- char c1 = hexDigits[bt & 0xf];// 取字节中低 4 位的数字转换
- stringbuffer.append(c0);
- stringbuffer.append(c1);
- }
- }
JAVA生成文件的md5校验值的更多相关文章
- Java 读取网络资源文件 获取文件大小 MD5校验值
Java 读取网络资源文件 获取文件大小 MD5校验值 封装一个文件操作工具类: package c; import java.io.*; import java.net.HttpURLConnect ...
- 生成文件的MD5值
import hashlib #########测试################# m = hashlib.md5() m.update(b"hello") m.update( ...
- Shell 对整个文件夹中的文件进行MD5校验 [转]
查看本地文件的 MD5 命令:md5sum FileName查看home目录下所有文件的 MD5 码:cd ~find /home -type f -print0 | xargs -0 md5sum ...
- 生成文件的MD5、SHA、SHA256
生成文件的MD5.SHA.SHA256 Linux系统生成MD5.SHA.SHA256md5sum file1.zip >> MD5.txt sha1sum file1.zip > ...
- Unity3d通用工具类之生成文件的MD5
今天我们来写写工具类,这个类有什么用呢? 也就是无论你做什么项目,这个工具类你都可以拿来用,之所以通用,是可以适用所有项目. 这节我主要讲如何生成文件的MD5码. 那么这个MD5是个什么鬼东西,读者可 ...
- MD5介绍及Windows下对文件做md5校验。
MD5介绍参考百度百科: 摘要如下: MD5 校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性. 一个散列函数,比如 MD5,是一个将任意长度的数据字符串转化成短的固定长度 ...
- Java生成文件
Java生成文件 1.说明 以文件路径作为參数,推断该文件是否存在,若不存在就创建文件.并输出文件路径 2.实现源代码 /** * @Title:BuildFile.java * @Package:c ...
- Java生成文件夹
Java生成文件夹 1.说明 判断文件夹是否存在,如果不存在就创建该文件夹,并打印其路径:如果存在,打印其路径 2.实现源码 /** * @Title:BuildFolder.java * @Pack ...
- JAVA 获取文件的MD5值大小以及常见的工具类
/** * 获取文件的MD5值大小 * * @param file * 文件对象 * @return */ public static String getMD5(File file) { FileI ...
随机推荐
- 洛谷 P5470 - [NOI2019] 序列(反悔贪心)
洛谷题面传送门 好几天没写题解了,写篇题解意思一下(大雾 考虑反悔贪心,首先我们考虑取出 \(a,b\) 序列中最大的 \(k\) 个数,但这样并不一定满足交集 \(\ge L\) 的限制,因此我们需 ...
- python15正则表达式
------------恢复内容开始------------ python实现实现实现实现 import re #将表达式编译,返回一个对象, pattern = re.compile(r" ...
- 给lua_close实现回调函数
先讲下为什么会需要lua_close回调吧. 我用C++给lua写过不少库,其中有一些,是C++依赖堆内存,并且是每一个lua对象使用一块单独的内存来使用的. 在之前,我一直都是魔改lua源代码,给l ...
- 选择省份、选择省市区举例【c#】【js】
<style type="text/css"> .labelhide { -webkit-box-shadow: 0px 1px 0px 0px #f3f3f3 !im ...
- C#最大值
dtToSList = sqlAccess.ExecuteTable(CommandText); ToSNo = Convert.ToString(dtToSList.Rows[i].ItemArra ...
- 《Scala编程》课程作业
第一题.百元喝酒 作业要求:每瓶啤酒2元,3个空酒瓶或者5个瓶盖可换1瓶啤酒.100元最多可喝多少瓶啤酒?(不允许借啤酒) 思路:利用递归算法,一次性买完,然后递归算出瓶盖和空瓶能换的啤酒数 /** ...
- mango后台
环境搭建 项目配置 下载后导入项目,删除mvnw.mvnw.cmd两个文件 修改spring-boot-starter-web pom.xml --> run as --> mave i ...
- 出现 CannotAcquireLockException 异常
项目出现 CannotAcquireLockException异常 原因: 百度了一下,是由于 Spring 事务嵌套造成死锁 结合自己的, handleWithdraw 方法底层有调用 其他 se ...
- 基于阿里云 ecs 使用 docker 方式部署 showDoc
官网文档:https://www.showdoc.cc/help?page_id=65610 (建议先看下这个) 首先说明一下,我 ecs 镜像是 CentOS 7.6 64位 1. 首先在 服务器上 ...
- Spring 与 SpringBoot 的区别
概述 Spring 与 SpringBoot 有什么区别???梳理一下 Spring 和 SpringBoot 到底有什么区别,从 Spring 和 SpringBoot 两方面入手. Spring ...