Java中zip的压缩和解压缩

Wesley13
• 阅读 809

在Java中可以使用ZipOutputStream和ZipInputStream来实现zip的压缩和解压缩操作,另外使用FileSystem也可以用来实现zip的解压缩,下面将介绍这几种方式,直接上代码。

zip压缩

待压缩文件目录结构:
Java中zip的压缩和解压缩

每个zip文件项都要对应一个ZipEntry,然后通过ZipOutputStream的putNextEntry方法开始写入一个新的zip文件项,将文件数据发送到zip输出流中,完成后再调用closeEntry方法。

@Testpublic void testCompressByZip() {    try (        //指定压缩完成后zip文件的存储路径        ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream("F:\\myFavorites.zip"))    )    {        //待压缩文件/目录所在的目录        File fileFolder = new File("F:\\我的收藏");        //获取目录下的所有文件        File[] files = fileFolder.listFiles();        ZipEntry zipEntry;        byte[] byteArray;        int len;        //遍历目录下的所有文件/目录,并将它们添加到压缩文件中        for (File file : files) {            //一个ZipEntry对应压缩文件中的一项            zipEntry = new ZipEntry(file.getName());            zipOutputStream.putNextEntry(zipEntry);            try (FileInputStream in = new FileInputStream(file)) {                byteArray = new byte[1024];                while ((len = in.read(byteArray)) != -1) {                    zipOutputStream.write(byteArray, 0, len);                }            } catch (IOException ex) {                ex.printStackTrace();            }            zipOutputStream.closeEntry();        }    } catch (IOException ex) {        ex.printStackTrace();    }}

压缩结果:
Java中zip的压缩和解压缩

zip解压缩

遍历zip文件中的所有项,并获取对应项的输入流,然后通过FileOutputStream输出到指定目录中。

@Testpublic void testDecompressByZip() {    try (        //指定需要解压缩的zip文件        ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream("F:\\myFavorites.zip"))    )    {        ZipEntry zipEntry;        byte[] byteArray;        int len;        //遍历zip文件中的所有项,并逐个解压到指定的目录中        while ((zipEntry = zipInputStream.getNextEntry()) != null) {            try (FileOutputStream fileOutputStream = new FileOutputStream("F:\\我的.........
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
AndroidStudio Gradle手动下载和安装
操作流程概述:下载好的压缩包和解压后的文件夹复制到gradle5.5.1all97z1ksx6lirer3kbvdnh7jtjg文件夹下,将gradle5.5.1all.zip.part文件删除,复制一份gradle5.5.1all.zip.lck文件,重命名为gradle5.5.1all.zip.ok,重启An
Stella981 Stella981
3年前
Linux下创建加密的压缩文件
Linux下创建加密的压缩文件方法一:1.使用ZIP命令创建一个加密的ZIP文件:2.解压缩加密文件时,会提示要求输入密码:方法二:1.使用7z创建一个zip文件:2.解压缩加密文件:3.使用限制方法三:1.Tocre
Wesley13 Wesley13
3年前
linux常见压缩格式及deb安装包用法
ZIP格式评价:可能是目前使用的最多的文档压缩格式,跨平台。压缩率不高。压缩一个目录:\ziprarchive\_name.zipdirectory\_to\_compress解压缩:\unziparchive\_name.zipTAR格式评价:消耗cpu及时间少,仅仅是一个打包工具,并不负责压缩。
Stella981 Stella981
3年前
CentOS 安装 rar、zip 解压缩
Windows系统压缩的rar和zip文件,在Linux系统下是无法通过tar命令解压缩的,需要使用rar和zip命令来解压缩。下面记录一下rar和zip安装和简单的使用。一、rar安装使用Linux系统下使用rarlinux解压缩rar压缩文件,下载页面:http://www.r
Stella981 Stella981
3年前
Linux基础学习笔记——压缩和解压(tar、zip)
压缩和解压缩Linux默认支持的压缩格式:gz、bz2、zip压缩目的:节省磁盘空间扩展:1.压缩文件尽量使用gz,因为占用空间较少,效率高;2.bz2压缩后的文件占用空间最小;3.zip压缩的文件占用空
Wesley13 Wesley13
3年前
Linux 运维 9月30日 笔记 6.1
目录一、压缩打包介绍二、gzip压缩工具三、bzip2压缩工具四、xz压缩工具一、压缩打包介绍1.常见压缩文件Windows.rar.zip.7zLinux.zip.gz.bz2.xz.tar 二、gzip压缩工具
子桓 子桓
1年前
高质量压缩 Keka for Mac中文最新介绍
Keka是一款简单易用的Mac平台上的压缩解压缩工具。它支持多种压缩格式,包括常见的ZIP、RAR、7ZIP、TAR等,可以快速、高效地压缩和解压缩各种文件和文件夹。以下是关于Keka软件的一些详细介绍:支持多种压缩格式。Keka支持多种常用压缩格式,包括
燕青 燕青
11个月前
苹果专用压缩解压工具:BetterZip 5中文注册激活版 附 激活码
是一款Mac操作系统上的压缩和解压缩工具,它可以帮助用户创建、打开、浏览和提取各种不同类型的压缩文件。使用BetterZip,您可以通过简单的拖放动作将文件添加到压缩包中,并选择不同的压缩格式(如zip、tar、7zip、rar等)。此外,BetterZi