前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FileZipUtil 压缩工具

FileZipUtil 压缩工具

作者头像
无忧摸鱼
发布2022-05-31 11:20:50
4720
发布2022-05-31 11:20:50
举报
文章被收录于专栏:摸鱼天堂

package com.example.test.utils;

import cn.hutool.core.date.DateUtil;

import java.io.*; import java.util.Date; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream;

代码语言:javascript
复制
/**
  * @author bianlei
  */
 public class FileZipUtil {
     /**
      * 文件打压缩包
      * @param files
      * @param Name
      * @return
      * @throws Exception
      */
     public static File zipFile(List<File> files, String Name)
             throws Exception {
         ZipOutputStream zipOut=null;
         FileOutputStream fous=null;
         Date date = DateUtil.date();
         String zipName = Name + DateUtil.format(date, "yyyyMMddHHmmss");
         File tempFile = File.createTempFile("temp","");
         File zipFile = new File(tempFile.getParent(),zipName+".zip");
         try {
             //创建文件输出流
             fous = new FileOutputStream(zipFile);
             zipOut = new ZipOutputStream(fous);
             //压缩打包
             zipFileToOutputStream(files, zipOut);
             return zipFile;
         }catch (Exception e) {
             e.printStackTrace();
         }finally{
             if(zipOut!=null){
                 zipOut.close();
             }
             if(fous !=null){
                 fous.close();
             }
         }
         return null;
     }
    /**
      * 把接受的全部文件打成压缩包
      * @param files<File>;
      * @param outputStream
      */
     public static void zipFileToOutputStream(List<File> files, ZipOutputStream outputStream) {
         int size = files.size();
         for(int i = 0; i < size; i++) {
             File file = files.get(i);
             inputFile(file, outputStream);
         }
     }

     /**
      * 根据输入的文件与输出流对文件进行打包
      * @param inputFile
      * @param ouputStream
      */
     public static void inputFile(File inputFile,ZipOutputStream ouputStream) {
        if(inputFile.exists() && inputFile.isFile()) {
             FileInputStream IN = null;
             BufferedInputStream bins = null;
             try {
                 IN = new FileInputStream(inputFile);
                 bins = new BufferedInputStream(IN, 512);
                 ZipEntry entry = new ZipEntry(inputFile.getName());
                 ouputStream.putNextEntry(entry);
                 // 向压缩文件中输出数据
                 int nNumber;
                 byte[] buffer = new byte[512];
                 while ((nNumber = bins.read(buffer)) != -1) {
                     ouputStream.write(buffer, 0, nNumber);
                 }
                 // 关闭创建的流对象
                 bins.close();
                 IN.close();
             } catch (Exception e) {
                 e.printStackTrace();
             }finally {
                 try {
                     if (bins != null){
                         bins.close();
                     }
                     if (IN != null){
                             IN.close();
                     }
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
     }
 }
 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档