zoukankan      html  css  js  c++  java
  • JAVA 获取文件的MD5值大小以及常见的工具类

     1 /**
     2      * 获取文件的MD5值大小
     3      * 
     4      * @param file
     5      *            文件对象
     6      * @return
     7      */
     8     public static String getMD5(File file) {
     9         FileInputStream fileInputStream = null;
    10         try {
    11             MessageDigest md5 = MessageDigest.getInstance("MD5");
    12             fileInputStream = new FileInputStream(file);
    13             byte[] buffer = new byte[8192];
    14             int length = 0;
    15             while ((length = fileInputStream.read(buffer)) != -1) {
    16                 md5.update(buffer, 0, length);
    17             }
    18             return new String(Hex.encodeHex(md5.digest()));
    19         } catch (Exception e) {
    20             DEBUGGER.error("file{} MD5 fail", e);
    21             return null;
    22         } finally {
    23             try {
    24                 if (null != fileInputStream) {
    25                     fileInputStream.close();
    26                 }
    27             } catch (IOException e) {
    28                 DEBUGGER.error("close fileInputStream fail", e);
    29                 return null;
    30             }
    31         }
    32     }

      

      常见的一些下载工具类:

      

      1 /**
      2      * 
      3      * 下载文件
      4      * 
      5      * @param files
      6      *            文件列表
      7      * @param file
      8      *            ZIP 压缩文件
      9      * @param request
     10      *            请求对象
     11      * @param response
     12      *            返回对象
     13      * @return servletResponse
     14      * @throws Exception
     15      */
     16     public static HttpServletResponse downLoadFiles(List<CusFile> files, CusFile cusFile, HttpServletRequest request, HttpServletResponse response)
     17             throws Exception {
     18         try {
     19             /**
     20              * 这个集合就是你想要打包的所有文件, 这里假设已经准备好了所要打包的文件
     21              */
     22             // List<File> files = new ArrayList<File>();
     23 
     24             /**
     25              * 创建一个临时压缩文件, 我们会把文件流全部注入到这个文件中 这里的文件你可以自定义是.rar还是.zip
     26              */
     27             // File file = new File("c:/certpics.rar");
     28             /*
     29              * if (!file.exists()){ file.createNewFile(); }
     30              */
     31             response.reset();
     32             // response.getWriter()
     33             // 创建文件输出流
     34             FileOutputStream fous = new FileOutputStream(cusFile.getFile());
     35             /**
     36              * 打包的方法我们会用到ZipOutputStream这样一个输出流, 所以这里我们把输出流转换一下
     37              */
     38             // org.apache.tools.zip.ZipOutputStream zipOut = new
     39             // org.apache.tools.zip.ZipOutputStream(fous);
     40             ZipOutputStream zipOut = new ZipOutputStream(fous);
     41             zipFile(files, zipOut);
     42             zipOut.close();
     43             fous.close();
     44             return downloadZip(cusFile, response);
     45         } catch (Exception e) {
     46             e.printStackTrace();
     47         }
     48         /**
     49          * 直到文件的打包已经成功了, 文件的打包过程被我封装在FileUtil.zipFile这个静态方法中,
     50          * 稍后会呈现出来,接下来的就是往客户端写数据了
     51          */
     52         // OutputStream out = response.getOutputStream();
     53         return response;
     54     }
     55 
     56     public static HttpServletResponse downloadZip(CusFile cusFile, HttpServletResponse response) {
     57         File file = cusFile.getFile();
     58         try {
     59             // 以流的形式下载文件。
     60             InputStream fis = new BufferedInputStream(new FileInputStream(file.getPath()));
     61             byte[] buffer = new byte[fis.available()];
     62             fis.read(buffer);
     63             fis.close();
     64             // 清空response
     65             response.reset();
     66 
     67             OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
     68             response.setContentType("application/octet-stream");
     69             response.setHeader("Content-disposition", "attachment; filename=" + new String(cusFile.getLogicFileName().getBytes("gbk"), "iso-8859-1"));
     70             toClient.write(buffer);
     71             toClient.flush();
     72             toClient.close();
     73         } catch (IOException ex) {
     74             ex.printStackTrace();
     75         } finally {
     76             try {
     77                 File f = new File(file.getPath());
     78                 f.delete();
     79             } catch (Exception e) {
     80                 e.printStackTrace();
     81             }
     82         }
     83         return response;
     84     }
     85 
     86     /**
     87      * 把接受的全部文件打成压缩包
     88      * 
     89      * @param List
     90      *            <File>;
     91      * @param org
     92      *            .apache.tools.zip.ZipOutputStream
     93      */
     94     public static void zipFile(List<CusFile> files, ZipOutputStream outputStream) {
     95         int size = files.size();
     96         for (int i = 0; i < size; i++) {
     97             CusFile file = (CusFile) files.get(i);
     98             zipFile(file, outputStream);
     99         }
    100     }
    101 
    102     /**
    103      * 根据输入的文件与输出流对文件进行打包
    104      * 
    105      * @param File
    106      * @param org
    107      *            .apache.tools.zip.ZipOutputStream
    108      */
    109     public static void zipFile(CusFile inputCusFile, ZipOutputStream ouputStream) {
    110         try {
    111             File inputFile = inputCusFile.getFile();
    112             if (inputFile.exists()) {
    113                 /**
    114                  * 如果是目录的话这里是不采取操作的, 至于目录的打包正在研究中
    115                  */
    116                 if (inputFile.isFile()) {
    117                     FileInputStream IN = new FileInputStream(inputFile);
    118                     BufferedInputStream bins = new BufferedInputStream(IN, 512);
    119                     // org.apache.tools.zip.ZipEntry
    120                     String entryName = new String(inputCusFile.getLogicFileName().getBytes(System.getProperty("file.encoding")), "utf-8");
    121                     ZipEntry entry = new ZipEntry(entryName);
    122                     ouputStream.putNextEntry(entry);
    123                     // 向压缩文件中输出数据
    124                     int nNumber;
    125                     byte[] buffer = new byte[512];
    126                     while ((nNumber = bins.read(buffer)) != -1) {
    127                         ouputStream.write(buffer, 0, nNumber);
    128                     }
    129                     // 关闭创建的流对象
    130                     bins.close();
    131                     IN.close();
    132                 }
    133             }
    134         } catch (Exception e) {
    135             e.printStackTrace();
    136         }
    137     }

      

    1 public class CusFile {
    2 
    3     private String logicFileName;
    4     
    5     private File file;
    6         // 省略getter and setter  
    7 }

      判断字符串或者对象的方法

      

     1 /**
     2      * 校验对象是否为空
     3      * 
     4      * @param object 传入对象
     5      * @return true:空 null:非空
     6      */
     7     public static boolean isNull(Object object) {
     8         return (object == null);
     9     }
    10     
    11     /**
    12      * 校验对象是否不为空
    13      * 
    14      * @param object 传入对象
    15      * @return true:不为空 false:为空
    16      */
    17     public static boolean isNotNull(Object object) {
    18         return (!(isNull(object)));
    19     }
    20     
    21     /**
    22      * 校验集合对象是否为空
    23      * 
    24      * @param coll 集合对象
    25      * @return true:为空 false:不为空
    26      */
    27     public static boolean isEmpty(Collection<?> coll) {
    28         return ((isNull(coll)) || (coll.isEmpty()));
    29     }
    30     
    31     /**
    32      * 校验集合对象是否不为空
    33      * 
    34      * @param coll 集合对象
    35      * @return true:不为空 false:不为空
    36      */
    37     public static boolean isNotEmpty(Collection<?> coll) {
    38         return (!(isEmpty(coll)));
    39     }
    40     
    41     /**
    42      * 校验传入的字符串是否为空
    43      * 
    44      * @param str 传入字符串
    45      * @return true:为空 false:不为空
    46      */
    47     public static boolean isEmpty(String str) {
    48         return ((isNull(str)) || ("".equals(str.trim())));
    49     }
    50 
    51     /**
    52      * 校验传入的字符串是否不为空
    53      * 
    54      * @param str 传入字符串
    55      * @return true:不为空  false:为空
    56      */
    57     public static boolean isNotEmpty(String str) {
    58         return (!(isEmpty(str)));
    59     }
    60     
    61     /**
    62      * 校验数组对象是否为空
    63      * 
    64      * @param objects 数组对象
    65      * @return true:为空 false:不为空
    66      */
    67     public static boolean isEmpty(Object[] objects) {
    68         return ((isNull(objects)) || (objects.length == 0));
    69     }
    70 
    71     /**
    72      * 校验数组对象是否不为空
    73      * 
    74      * @param objects 数组对象
    75      * @return true:不为空 false:为空
    76      */
    77     public static boolean isNotEmpty(Object[] objects) {
    78         return (!(isEmpty(objects)));
    79     }
    80     
    81     /**
    82      * 校验MAP集合是否为空
    83      * 
    84      * @param map map集合对象
    85      * @return true:为空 false:不为空
    86      */
    87     public static boolean isEmpty(Map<?, ?> map) {
    88         return ((isNull(map)) || (map.isEmpty()));
    89     }
    90     
    91     /**
    92      * 校验MAP集合是否不为空
    93      * 
    94      * @param map map集合对象
    95      * @return true:不为空 false:为空
    96      */
    97     public static boolean isNotEmpty(Map<?, ?> map) {
    98         return (!(isEmpty(map)));
    99     }

       

     1 /** 
     2       * 判断字符串是否是整数 
     3       */  
     4      public static boolean isInteger(String value) {  
     5          try {  
     6              Integer.parseInt(value);  
     7              return true;  
     8          } catch (NumberFormatException e) {  
     9              return false;  
    10          }  
    11      }  
    12       
    13      /** 
    14       * 判断字符串是否是浮点数 
    15       */  
    16      public static boolean isDouble(String value) {  
    17          try {  
    18              Double.parseDouble(value);  
    19              if (value.contains("."))  
    20                  return true;  
    21              return false;  
    22          } catch (NumberFormatException e) {  
    23              return false;  
    24          }  
    25      }  
    26       
    27      /** 
    28       * 判断字符串是否是数字 
    29       */  
    30      public static boolean isNumber(String value) {  
    31          return isInteger(value) || isDouble(value);  
    32      }   

      

  • 相关阅读:
    Python:字母图形(蓝桥杯)
    Python:list列表中元素输出的几种情况
    Python:实现杨辉三角(蓝桥杯)
    Python:DataFrame转dict字典
    RedHat 5 Enterprise DHCP服务器的安装与配置(Windows验证)
    Python时间模块。
    django项目中form表单和ajax的文件上传功能。
    django项目后台权限管理功能。
    django项目中cxselect三级联动
    django项目用higcharts统计最近七天文章点击量。
  • 原文地址:https://www.cnblogs.com/XQiu/p/5282243.html
Copyright © 2011-2022 走看看