zoukankan      html  css  js  c++  java
  • java 中,如何获取文件的MD5值呢?如何比较两个文件是否完全相同呢?

    /**
    	 * Get MD5 of one file:hex string,test OK!
    	 * 
    	 * @param file
    	 * @return
    	 */
    	public static String getFileMD5(File file) {
    		if (!file.exists() || !file.isFile()) {
    			return null;
    		}
    		MessageDigest digest = null;
    		FileInputStream in = null;
    		byte buffer[] = new byte[1024];
    		int len;
    		try {
    			digest = MessageDigest.getInstance("MD5");
    			in = new FileInputStream(file);
    			while ((len = in.read(buffer, 0, 1024)) != NEGATIVE_ONE) {
    				digest.update(buffer, 0, len);
    			}
    			in.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    			return null;
    		}
    		BigInteger bigInt = new BigInteger(1, digest.digest());
    		return bigInt.toString(16);
    	}
    
    	/***
    	 * Get MD5 of one file!test ok!
    	 * 
    	 * @param filepath
    	 * @return
    	 */
    	public static String getFileMD5(String filepath) {
    		File file = new File(filepath);
    		return getFileMD5(file);
    	}
    
    	/**
    	 * MD5 encrypt,test ok
    	 * 
    	 * @param data
    	 * @return byte[]
    	 * @throws Exception
    	 */
    	public static byte[] encryptMD5(byte[] data) throws Exception {
    
    		MessageDigest md5 = MessageDigest.getInstance(SystemUtil.KEY_MD5);
    		md5.update(data);
    		return md5.digest();
    	}
    
    	public static byte[] encryptMD5(String data) throws Exception {
    		return encryptMD5(data.getBytes(SystemUtil.CHARSET_ISO88591));
    	}
    	/***
    	 * compare two file by Md5
    	 * 
    	 * @param file1
    	 * @param file2
    	 * @return
    	 */
    	public static boolean isSameMd5(File file1,File file2){
    		String md5_1=SystemUtil.getFileMD5(file1);
    		String md5_2=SystemUtil.getFileMD5(file2);
    		return md5_1.equals(md5_2);
    	}
    	/***
    	 * compare two file by Md5
    	 * 
    	 * @param filepath1
    	 * @param filepath2
    	 * @return
    	 */
    	public static boolean isSameMd5(String filepath1,String filepath2){
    		File file1=new File(filepath1);
    		File file2=new File(filepath2);
    		return isSameMd5(file1, file2);
    	}
    

      测试:

    @Test
        public void test_getFileMD5() throws Exception{
            String filepath="D:\download\3_尚学堂_UML概览.avi";
    //        File file=new File(filepath);
            String md5_1=SystemUtil.getFileMD5(filepath);
            System.out.println(md5_1);
            
            byte[]bytes=FileUtils.readBytes4file(filepath);
            byte[]md5=SystemUtil.encryptMD5(bytes);
            String md5_2=SystemUtil.toHexString(md5);
            System.out.println(md5_2);
            Assert.assertEquals(md5_1, md5_2);
        }
  • 相关阅读:
    c# 之 事务
    Asp.Net 之 js/jquery获取服务器端控件
    产品能力框架图
    软件测试职业发展规划图
    Loadrunner 工作原理图
    Linux内核性能测试工具全景图
    Linux 性能监控分析
    软件藏宝图
    Haproxy 8种算法+Session共享
    Keepalived+Haproxy实现高可用负载均衡
  • 原文地址:https://www.cnblogs.com/diaozhaojian/p/7212511.html
Copyright © 2011-2022 走看看