系列文章目录

第一章 万事万物皆对象
第二章 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. java相关网络协议无响应_java网络协议有哪些
  2. MFC中的资源视图和如何打开资源视图
  3. Qt实现拖动一个lineEdit同时拖动mainwindow
  4. 160家优秀国外技术公司博客
  5. 回调函数自定义传参_10分钟教你手写8个常用的自定义hooks
  6. 算法题之求二叉树的最大距离
  7. Java数据结构和算法(四)--链表
  8. 帮助浏览器、help函数和doc函数 符号表述的数集
  9. 关系型数据库(八),数据库其他面试题
  10. 15.深入理解Zend执行引擎(PHP5)
  11. 如何给澳洲路局写信refound罚金,遇到交通罚款怎么办
  12. 论初唐诗人的历史地位-上官仪、王勃、杨炯、陈子昂、杜审言
  13. 【Fortran】STOP语句
  14. 如何用python自动改试卷_利用python爬取软考试题之ip自动代理
  15. android 获取蓝牙设备id_获取设备唯一ID的几种方式
  16. 炒股:如何安全地追热点
  17. 长在不同部位逗逗的情况
  18. java跨域解析json数据_java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据...
  19. t’触发器真值表和状态方程_利用真值表实现触发器的相互转换
  20. 3ds Max 打造漂亮星球大战海报-3D建模教程

热门文章

  1. 浏览器:重绘(repaint)与回流/重排(reflow)
  2. JavaScript刷新当前页面的三种方法,载入新文档替换当前页面
  3. restTemplate做长连接
  4. java实现简单的学生信息管理系统
  5. char数据类型 代码理解
  6. Caffe学习(7)——图像数据转换为db文件(leveldb/lmdb)
  7. android 打包assets,Android多渠道打包(Assets处理)
  8. android studio 代码管理
  9. K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示
  10. 【JAVA】文本处理(1)—删除文本中的空白行