代码:

package com.cfam.utils;import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Base64;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** <p>* Title: ZipToBase64.java</p>* <p>* Description: 压缩 转 base64 网络传输</p>* * @author ken chen* @date 2019年7月26日* @param srcFiles 需要压缩的文件* @return Base64 压缩文件后进行base64编码* @version 1.0*/
public class ZipToBase64 {private static final int BUFFER_SIZE = 2 * 1024;private static final Logger log = LoggerFactory.getLogger(ZipToBase64.class);public static String toBase64Zip(List<File> srcFiles) throws RuntimeException {log.info("开始压缩文件    [{}]", srcFiles);long start = System.currentTimeMillis();String base64toZip = "";ZipOutputStream zos = null;ByteArrayOutputStream baos = new ByteArrayOutputStream();try {zos = new ZipOutputStream(baos);for (File srcFile : srcFiles) {byte[] buf = new byte[BUFFER_SIZE];log.info("压缩的文件名称    [{}]   ", srcFile.getName() + "压缩的文件大小      [{}] ", srcFile.length());zos.putNextEntry(new ZipEntry(srcFile.getName()));int len;FileInputStream in = new FileInputStream(srcFile);while ((len = in.read(buf)) != -1) {zos.write(buf, 0, len);}zos.closeEntry();in.close();}long end = System.currentTimeMillis();log.info("压缩完成,耗时:    [{}] ms", (end - start));} catch (Exception e) {throw new RuntimeException("zip error from ZipToBase64", e);} finally {if (zos != null) {try {zos.close();} catch (IOException e) {e.printStackTrace();}}}byte[] refereeFileBase64Bytes =Base64.getEncoder().encode(baos.toByteArray());try {base64toZip = new String(refereeFileBase64Bytes, "UTF-8");} catch (Exception e) {throw new RuntimeException("压缩流出现异常", e);}return base64toZip;}/*** <p>* Title: ZipToBase64.java</p>* <p>* Description: Base64 解密 zip 解压缩 </p>* * @author ken chen* @date 2019年7月26日* @param path   解压文件夹路径 文件夹父文件可更改* @param base64 base64加密字符* @return Base64 压缩文件后进行base64编码* @version 1.0*/public static void Base64ToFile(String base64, String path) throws RuntimeException {log.info("解压文件地址" + path);try {byte[] byteBase64 =Base64.getDecoder().decode(base64);ByteArrayInputStream byteArray = new ByteArrayInputStream(byteBase64);ZipInputStream zipInput = new ZipInputStream(byteArray);ZipEntry entry = zipInput.getNextEntry();File fout = null;File file = new File(path);String parent = file.getParent();while (entry != null && !entry.isDirectory()) {log.info("文件名称:    [{}]", entry.getName());fout = new File(parent, entry.getName());if (!fout.exists()) {(new File(fout.getParent())).mkdirs();}BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(fout));int offo = -1;byte[] buffer = new byte[BUFFER_SIZE];while ((offo = zipInput.read(buffer)) != -1) {bos.write(buffer, 0, offo);}bos.close();// 获取 下一个文件entry = zipInput.getNextEntry();}zipInput.close();byteArray.close();} catch (Exception e) {throw new RuntimeException("解压流出现异常", e);}}public static void main(String[] args) {// 文件压缩List<File> fileList = new ArrayList<File>();fileList.add(new File("C:\\Users\\cjy\\Desktop\\qqq\\担保合同附件.pdf"));fileList.add(new File("C:\\Users\\cjy\\Desktop\\qqq\\融资申请表.xls"));fileList.add(new File("C:\\Users\\cjy\\Desktop\\qqq\\其他附件.jpg"));String base64 = ZipToBase64.toBase64Zip(fileList);log.info("文件base 64 加密:" + base64);ZipToBase64.Base64ToFile(base64, "C:\\Users\\cjy\\Desktop\\qqq\\新建文件夹\\a");}
}

java工具类 文件zip压缩 base64 加密,base64解密 zip解压相关推荐

  1. java工具类-DigestUtils实现md5码加密

    commons-codec-1.3jar放进去 第一种 String psd = DigestUtils.md5DigestAsHex(tbUser.getPassword().getBytes()) ...

  2. 【Java工具类】(30)—DES加密工具类

    Java工具类(30)-DES加密工具类 package com.awifi.cloudnative.container.manage.provider.utils;import org.apache ...

  3. 如何使用zip工具类打包下载压缩图片?

    使用zip工具类打包下载压缩图片? 最近工作遇到一需求,让我把用户想要的图片下载下来,并打包成压缩包.当用户没选择时,就下载所有的图片.由于感觉很有意思,便做一下学习总计. 首先说一下,制作的思路.前 ...

  4. MD5工具类,提供字符串MD5加密(校验)、文件MD5值获取(校验)功能

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.Byt ...

  5. 【Java工具类】(22)—服务器传文件工具类SCp和Sftp

    Java工具类(22)-服务器传文件工具类SCp和Sftp 1.Scp package com.awifi.capacity.docker.manager.utils;import ch.ethz.s ...

  6. java工具类获取文件扩展名与content-type、http与content-type映射关系

    java工具类获取文件扩展名与content-type.http与content-type映射关系 大家好,我是酷酷的韩~ 一.对应关系参考地址: http://doc.chacuo.net/cont ...

  7. Java工具类——DES加密和解密工具 I

    可以指定不同的密钥对同一字符串进行不同的加密操作,增强加密性能. package com.app; import java.security.Key; import java.security.Sec ...

  8. (6)常用的Java工具类

    目录 前言: 第一部分:常用的16个工具类 一.org.apache.commons.io.IOUtils 二.org.apache.commons.io.FileUtils 三.org.apache ...

  9. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

    文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...

  10. RSA加密算法介绍及Java工具类

    一.RSA加密算法介绍 当今重要的三类加密算法:非对称加密.对称加密以及哈希算法(HASH严格说不是加密算法,但由于其不可逆性,已成为加密算法中的一个重要构成部分). 1976年以前,所有的加密方法都 ...

最新文章

  1. sql: TRIGGER
  2. LeetCode Basic Calculator(用栈计算表达式的值)
  3. 作为一名产品经理,我是如何快速做项目计划的?
  4. 剑指offer-用两个栈实现一个队列
  5. 开源GraphView的使用--数据统计
  6. 关于加快OpenCV下载速度的解决方法
  7. 基于ssm汽车租赁管理系统的设计与实现
  8. macos复制粘贴快捷键 快速_苹果电脑复制粘贴快捷键是什么 如何操作【图文】...
  9. CSS backdrop-filter 实现毛玻璃效果 无需定位裁剪图片
  10. 如何理解相关性系数(pearson、spearman、kendall)
  11. 输入验证码,一直报错验证码错误(内网多服务器)
  12. UDS-统一诊断服务
  13. placement delete
  14. 2019年1月1日起,国家推出新的个人所得税政策,起征点上调值5000元。也就是说税前工资扣除五险一金(五险一金数额假设是税前工资的10%) * 后如果不足5000元,则不交税。
  15. 联想在钛媒体峰会上提前泄漏了MOTO新杀器
  16. 古诗词的直译和韵译有什么区别?看看就知道了
  17. 记一次gitbook的安装
  18. music_悲催的键盘手
  19. java截取前几位_java中怎么截取字符串前几位
  20. 」张顺在灯影下张时 水浒传

热门文章

  1. oracle中连续天数计算,Oracle计算连续天数,计算连续时间,Oracle连续天数统计
  2. PAT 1037 在霍沃茨找零钱
  3. 用计算机弹无羁的数字,无羁钢琴谱数字双手波尔卡教
  4. 四位共阳极数码管显示函数_求各位大神指正,四位一体共阳极数码管数字钟程序,仿真能运行,实物就只显8个8,不动...
  5. 论文笔记:多标签学习——ACkEL算法
  6. w10共享网络没有计算机,win10网络共享找不到对方电脑怎么办
  7. 光伏电站清扫机器人_光伏电站清扫机器人
  8. 人人网冷落主业,押注智能硬件
  9. 追问顶刊 | 独家专访《科学》最新研究:老年为何出现睡眠碎片化?
  10. ada:世界上第一位程序员