zip解压和压缩

这篇具有很好参考价值的文章主要介绍了zip解压和压缩。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

zip解压和压缩

引言

  • 介绍zip文件的概念

  • 涉及到的Java类和包:java.util.zip

  • https://blog.csdn.net/u012998680/article/details/126060855

压缩文件

  • 准备压缩的源文件和目标zip文件的路径

  • 创建FileOutputStreamZipOutputStream对象

  • 创建源文件的FileFileInputStream对象

  • 创建ZipEntry对象,并设置其名称为源文件的名称

  • 使用ZipOutputStreamputNextEntry方法将ZipEntry对象添加到压缩文件中

  • 使用循环读取源文件的内容,并使用ZipOutputStreamwrite方法将内容写入压缩文件中

  • 关闭流对象

解压缩文件

  • 准备解压缩的zip文件路径和目标目录路径

  • 创建目标目录的File对象,如果目录不存在则创建目录

  • 创建ZipInputStream对象,使用FileInputStream和zip文件路径作为参数

  • 使用ZipInputStreamgetNextEntry方法获取zip文件的每个条目ZipEntry

  • 循环处理每个zip条目,获取条目的名称和文件内容,并将内容写入目标目录

  • 关闭流对象

  1. 示例代码

    创建zip工具类:文章来源地址https://www.toymoban.com/news/detail-511002.html

    import org.springframework.mock.web.MockMultipartFile;
    import org.springframework.web.multipart.MultipartFile;

    import java.io.*;
    import java.nio.charset.Charset;
    import java.util.*;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;


    public class ZipUtil {
       // 解压并返回的key是全路径
       public static Map<String, List<MultipartFile>> unzipAndConvertToMap(File file) throws IOException {
           Map<String, List<MultipartFile>> map = new HashMap<>(); // 存放解压后的图片
           byte[] buffer = new byte[1024];
           ZipInputStream zis = new ZipInputStream(new FileInputStream(file),Charset.forName("GBK"));
           try {
               ZipEntry entry;
               while ((entry = zis.getNextEntry()) != null) {

                   if (!entry.isDirectory() && isImage(entry.getName())) { // 判断当前解压的是否是图片
                       // 获取到全路径名称
                       String allFileName = entry.getName();
                       String[] split = allFileName.split("/");
                       // // 图片名称
                       // String imageName = split[split.length - 1];
                       // // 第一层文件夹名称
                       // String firstFile = split[0];
                       StringBuffer sb = new StringBuffer();
                       for (int i = 1; i < split.length-1; i++) {
                           sb.append(split[i]).append("/");
                      }
                       String folderName = sb.toString();
                       List<MultipartFile> imgList = map.getOrDefault(folderName, new ArrayList<>());
                       ByteArrayOutputStream baos = new ByteArrayOutputStream();
                       int len;
                       while ((len = zis.read(buffer)) > 0) {
                           baos.write(buffer, 0, len);
                      }
                       MultipartFile multipartFile = new MockMultipartFile(entry.getName(), entry.getName(), "", baos.toByteArray());
                       imgList.add(multipartFile);
                       map.put(folderName,

到了这里,关于zip解压和压缩的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux(Centos7)基本操作(1):文件压缩和解压(tar、zip)

    安装命令 yum install -y unzip zip 压缩文件: 基本格式: zip [参数] [压缩后的文件名] [打包的目录路径] 压缩文件:xxx是当前路径中需要压缩的文件夹: zip -r xxx.zip xxx/ ; 比如需要压缩文件夹 a 下所有的内容,就执行 zip -r a.zip a ; 如果是将其他目录下的文件压缩到当前路径,xxx前面

    2024年02月08日
    浏览(53)
  • 微信小程序下载zip压缩包后解压,并且打开文件查看的内容

            在开发pc端后台管理系统的时候,经常会遇到这样的需求:下载zip到本地,然后用户双击压缩包,并借助电脑端的压缩软件打开压缩包,就可以查看里面的word、excel、pdf文件里面的内容。(这种需求,毫无疑问,对于我们前端开发工程师来说,已经是习以为常了)。

    2024年02月08日
    浏览(51)
  • 轻量级力量:深入MiniZip库,实现C++中ZIP文件的简便压缩与解压

      MiniZip是一个轻量级的压缩库,它是zlib库的一部分,用于在C++中进行ZIP文件的压缩和解压缩操作。以下是MiniZip的一些功能和优点: 功能: 创建ZIP文件:  MiniZip可以用于创建包含一个或多个文件的ZIP归档。 压缩:  MiniZip支持使用不同的压缩算法对文件进行压缩,例如DEFL

    2024年02月04日
    浏览(40)
  • Linux 压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法

    Linux 压缩、解压文件的方式有如下几种: tar 是一种常用的打包工具,可以将多个文件或目录打包成一个 tar 包,也可以将一个 tar 包解压缩到指定的目录。 1.1. 压缩: 1.2. 解压: 1.3. tar 命令各参数含义 tar 命令是 Linux 下常用的打包和压缩工具,用于将多个文件或目录打包成一

    2024年02月10日
    浏览(50)
  • 【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法

    目录 1、使用 tar 命令: 1.1. 压缩: 1.2. 解压: 1.3. tar 命令各参数含义 2. gzip、gunzip gzip 命令: 压缩文件: 保留原始文件,创建压缩文件: 保留原始文件,显示压缩进度: gunzip 命令: 解压文件: 保留压缩文件,创建原始文件: 保留压缩文件,显示解压进度: 3. zip、unzip

    2024年02月03日
    浏览(48)
  • linux_文件压缩、文件解压(gzip命令、gunzip 命令、bzip2命令、bunzip2命令、tar命令、rar命令、zip命令)

    接上一篇:linux用户管理(查看在线用户who命令、创建用户adduser命令、创建用户组groupadd命令、查看用户组groups命令、删除用户、设置用户密码passwd命令) 本次来分享怎样在 linux中压缩和解压文件夹 ,在linux中压缩解压的方式有 5种 ,分别是 gz格式压缩解压、bz2格式压缩解压、

    2024年02月01日
    浏览(96)
  • zip解压和压缩

    引言 介绍zip文件的概念 涉及到的Java类和包: java.util.zip https://blog.csdn.net/u012998680/article/details/126060855 压缩文件 准备压缩的源文件和目标zip文件的路径 创建 FileOutputStream 和 ZipOutputStream 对象 创建源文件的 File 和 FileInputStream 对象 创建 ZipEntry 对象,并设置其名称为源文件的名

    2024年02月11日
    浏览(83)
  • Qt 编译使用Bit7z库接口调用7z.dll、7-Zip.dll解压压缩常用Zip、ISO9660、Wim、Esd、7z等格式文件(一)

    bit7z 一个c++静态库,为 7-zip 共享库提供了一个干净简单的接口 使用 CMAKE 重新编译 github 上的 bit7z 库,用来解压/预览 iso9660 , WIm , Zip , Rar 等常用的压缩文件格式。 z-zip 库支持大多数压缩文件格式 bit7z 是一个跨平台的c++静态库,它允许通过一个干净简单的包装器接口从7-

    2024年02月11日
    浏览(78)
  • Linux :: 压缩与解压指令【1】:zip / unzip 指令:压缩与解压用法详解

    前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 学习集: C++ 入门到入土!!!学习合集 Linux 从命令到网络再到内核!学习合集 目录索引: 1. 基本用法及功能 2. 基本用法:压缩/解压指定文件【注意代码示例内容!】 3. 「-r」

    2024年01月25日
    浏览(56)
  • QT 利用开源7z 实现解压各种压缩包,包括进度条和文件名的显示(zip,7z,rar,iso等50多种格式)

            想做一个winRAR一样的解压软件吗?很简单,利用开源的7z库就能实现。我看网上其他人说的方法不敢苟同,误人子弟。以前自己在项目中使用过7z,这次又有需要,就想记录下来。如果你研究过如何用7z的话,一定知道7z的每一个GUID都代表了一种格式,50多种GUID也就有

    2024年02月04日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包