系列文章目录

第一章 万事万物皆对象
第二章 java构造器
第三章 java访问权限
第四章 java初始化
第五章 java继承
第六章 java重载与重写
第七章 java接口和抽象类
第八章 java数组
第九章 java内部类
第十章 java时间操作
第十一章 final关键字
第十二章 java字符串
第十三章 java异常
第十四章 java泛型
第十五章 java IO操作
第十六章 java NIO操作
第十七章 java zip压缩
第十八章 java反射
第十九章 java反射之Type接口
第二十章 java8流式操作
第二十一章 java8函数式编程


文章目录

  • zip压缩
    • ZipInputStream读取
    • ZipOutputStream写入

原文链接 https://zhhll.icu/2022/java基础/IO/3.zip压缩/

zip压缩

zip文档可以以压缩格式存储一个或多个文件,可以使用ZipInputStream读取Zip文档,使用ZipOutputStream来写入到Zip文件中

ZipInputStream读取

ZipInputStream zin = new ZipInputStream(in);
ZipEntry ze;
// getNextEntry返回描述这个项的ZipEntry的对象
while ((ze = zin.getNextEntry()) != null) {// getInputStream获取用于读取该项的输入流BufferedReader br = new BufferedReader(new InputStreamReader(zf.getInputStream(ze), charset));// 业务逻辑 todobr.close();// closeEntry关闭当前打开的项zin.closeEntry();
}
zin.close();

ZipOutputStream写入

ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));File fileWillZip = new File(dir);if (fileWillZip.exists()) {// 需要压缩的文件是文件夹。需要递归进行压缩if(fileWillZip.isDirectory()){compressZip(zipOut,fileWillZip,fileWillZip.getName());} else { // 是文件,直接压缩zip(zipOut,fileWillZip,dir);}
}
zipOut.closeEntry();
zipOut.close();private void compressZip(ZipOutputStream zipOutput, File file, String suffixpath) {File[] listFiles = file.listFiles();// 列出所有的文件for(File fi : listFiles){if(fi.isDirectory()){ // 如果是文件夹,继续递归if(suffixpath.equals("")){compressZip(zipOutput, fi, fi.getName());}else{compressZip(zipOutput, fi, suffixpath + File.separator + fi.getName());}}else{zip(zipOutput, fi, suffixpath);}}}public void zip(ZipOutputStream zipOutput, File file, String suffixpath) {try {// 创建ZipEntry对象ZipEntry zEntry = null;if(suffixpath.equals("")){zEntry = new ZipEntry(file.getName());}else{zEntry = new ZipEntry(suffixpath + File.separator + file.getName());}// putNextEntry将给定的ZipEntry中的信息写出到输出流,并定位用于写出数据的流,然后这些数据可以通过write方法写出到这个输出流中zipOutput.putNextEntry(zEntry);BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));byte[] buffer = new byte[1024];int read = 0;while((read = bis.read(buffer)) != -1){zipOutput.write(buffer, 0, read);}bis.close();} catch (Exception e) {e.printStackTrace();}}

java zip压缩相关推荐

  1. Java Zip压缩实现(亲测)

    最近在自学javaWeb,先复习一下java,把还给老师的东西再找回来(知识如果不用很快就会忘记啊).. 今天看到了zip压缩,决定要整理一下. java将有关zip压缩的内容都封装在java.uti ...

  2. Java zip 压缩 文件夹删除,移动,重命名,复制

    FileUtil.java import java.io.*; import java.util.List; import java.util.zip.ZipEntry; import java.ut ...

  3. java zip压缩解压_JAVA实现实用的ZIP压缩与解压

    程序实现了ZIP压缩.共分为2部分 : 压缩(compression)与解压(decompression) 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压. ...

  4. java zip 压缩乱码_java实现zip压缩中文文件名乱码怎么办?

    java实现zip压缩中文文件名乱码怎么办? java实现zip压缩中文文件名乱码的解决办法: 一.文件压缩的中文乱码问题 1.中文文件名的乱码解决 对于压缩的文件,当文件名称是中文时,若使用JDK ...

  5. Java ZIP压缩输入输出流

    ZIP是一种较为常见的压缩形式,在Java中要想实现ZIP的压缩需要导入java.util.zip包,可以使用此包中的ZipFile.ZipOutputStream.ZipInputStream.Zi ...

  6. java zip压缩文件

    java 生成zip压缩文件 1.zip压缩文件 文章目录 java 生成zip压缩文件 一.引入jar包 二.工具类 1.有密码压缩 2.无密码压缩 3. 解压方法 三.示例 3.1.压缩前 3.2 ...

  7. java zip压缩 加密码_java 压缩成zip文件、解压zip文件(可设置密码)

    1.情景展示 java实现将文件夹进行压缩打包的功能及在线解压功能 2.解决方案 方式一:压缩.解压zip 准备工作:slf4j-api.jar org.slf4j slf4j-api 1.7.25 ...

  8. java zip压缩_压缩工具

    由于rar4版本以上的无法通过java代码进行解压,采用调用本地程序来进行解压 第一步:下载winrar 第二步:配置环境变量,只需要配置到安装目录即可,,重新打开命令窗口 第三步:单个文件进行测试 ...

  9. Java ZIP压缩 ZipArchiveEntry实现ZIP高效、Java多线程压缩、可控CPU使用率 Apache commons-compress

    基于Apache开源commons-compress实现可控多线程压缩 目的 Java自带ZipEntity压缩方式太慢,严重影响压缩效率. commons-compress实现的ZipArchive ...

最新文章

  1. Quick-cocos2d-x3.3 Study (一) --------- 创建一个UI标签
  2. 工业用微型计算机(18)-指令系统(13)
  3. ssm使用全注解实现增删改查案例——web.xml
  4. HTTP代理模块(HTTP Proxy)
  5. python爬虫---(2)爬虫基本流程
  6. Mixed Finite Elements for Variational Surface Modeling
  7. Q81:“三角形网格”之“PLY文件”
  8. 71计算机组装与维修期中,《计算机维修》期中考试卷
  9. poj 3278 Catch That Cow (简单的bfs)
  10. 头条推荐越来越少是否还要坚持下去
  11. Vue 轻量级后台管理系统基础模板
  12. python 以图搜图1688_以图搜图(一):python aHash算法
  13. C99 designator ‘name’ outside aggregate initializer
  14. 连手机热点宿主机无法连上VMvare linux Centos
  15. Coursera的视频一直加载无法播放问题的完整解决【win10】
  16. 华为5g鸿蒙系统手机多少钱,华为Mate30Pro或成今年机皇:鸿蒙系统+麒麟985+5G基带,价格感人...
  17. 【小技术】数据库显示“远程过程调用失败”怎么办?
  18. Python 下opencv 应用: 摄像头参数设置
  19. LeetCode之重新排列字符串(五千四百七十二)
  20. 【计算机网络】考点总结

热门文章

  1. 前端面试题汇总HTML篇
  2. OleDbCommand cmd.Parameters.AddWithValue 添加参数时需要按照存储过程参数的顺序加入
  3. python ip代理池_Python 爬虫IP代理池的实现
  4. 《设计模式 -- 可复用面向对象软件的基础》读后感
  5. Kettle实战视频教程
  6. vdimgck.php不显示,织梦后台验证码不显示解决方案
  7. 自定义加密算法打造不死网马
  8. 每日新闻 | 华尔街投行重新配置25只中国股票 包括阿里与腾讯
  9. 去易宝支付面试经历9.20
  10. 【基础篇】-tensor(张量)