zoukankan      html  css  js  c++  java
  • MD5 检查文件一致性

     1 package test;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.math.BigInteger;
     6 import java.security.MessageDigest;
     7 import java.util.HashMap;
     8 import java.util.Map;
     9 
    10 public class FileDigest {
    11     /**
    12      * 获取单个文件的MD5值!
    13      * 
    14      * @param file
    15      * @return
    16      */
    17     public static String getFileMD5(File file) {
    18         if (!file.isFile()) {
    19             return null;
    20         }
    21         MessageDigest digest = null;
    22         FileInputStream in = null;
    23         byte buffer[] = new byte[1024];
    24         int len;
    25         try {
    26             digest = MessageDigest.getInstance("MD5");
    27             in = new FileInputStream(file);
    28             while ((len = in.read(buffer, 0, 1024)) != -1) {
    29                 digest.update(buffer, 0, len);
    30             }
    31             in.close();
    32         } catch (Exception e) {
    33             e.printStackTrace();
    34             return null;
    35         }
    36         BigInteger bigInt = new BigInteger(1, digest.digest());
    37         return bigInt.toString(16);
    38     }
    39 
    40     /**
    41      * 获取文件夹中文件的MD5值
    42      * 
    43      * @param file
    44      * @param listChild
    45      *            ;true递归子目录中的文件
    46      * @return
    47      */
    48     public static Map<String, String> getDirMD5(File file, boolean listChild) {
    49         if (!file.isDirectory()) {
    50             return null;
    51         }
    52         // <filepath,md5>
    53         Map<String, String> map = new HashMap<String, String>();
    54         String md5;
    55         File files[] = file.listFiles();
    56         for (int i = 0; i < files.length; i++) {
    57             File f = files[i];
    58             if (f.isDirectory() && listChild) {
    59                 map.putAll(getDirMD5(f, listChild));
    60             } else {
    61                 md5 = getFileMD5(f);
    62                 if (md5 != null) {
    63                     map.put(f.getPath(), md5);
    64                 }
    65             }
    66         }
    67         return map;
    68     }
    69 
    70     public static void main(String[] args) {
    71         File file1 = new File("H:/update/lib/111.txt");
    72         File file2 = new File("H:/1111.txt");
    73         System.out.println(getFileMD5(file1).equals(getFileMD5(file2)));
    74     }
    75 
    76 }
  • 相关阅读:
    理解glance
    基于Kubernetes(k8s)的RabbitMQ 集群
    docker最佳实践-----美团点评的分享
    成功搭建云计算的关键技巧------过完年第一篇
    从SDN鼻祖Nicira到VMware NSX 网络虚拟化平台的简单探讨
    openstack多region介绍与实践---转
    openstack架构
    kvm网络虚拟化
    kvm虚拟化操作
    html-from提交表单
  • 原文地址:https://www.cnblogs.com/cloudwind/p/2779156.html
Copyright © 2011-2022 走看看