JAVA获取文件的MD5值

本文提供了两种计算文件MD5的方法。第一种使用Apache Commons IO和DigestUtils库来读取文件并计算其MD5校验和;第二种尝试通过映射文件到内存缓冲区的方式进行计算,但存在偶尔引发IO异常的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.推荐如下方法:

 /**
	  * 推荐此方法获取文件MD5
	  * @param path 文件路径
	  * @return
	  */
	 public static String getMd5File(String path){
			String md5 = null;
	        try {
	        	FileInputStream fis= new FileInputStream(path);    
				md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis));
				IOUtils.closeQuietly(fis);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return md5;    
	 }

2.下面这个方法也尝试过,但不知道是个人代码问题还是方法问题,偶尔会出现IO异常,因为赶项目没时间深究,先mark后续看看

	/**
	 * @param file
	 * @return
	 * @throws FileNotFoundException
	 */
	 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;  
     } 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值