iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream
  • 938
分享到

Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream

javaZipInputStreamZipOutputStreamzip 2023-08-16 20:08:57 938人浏览 安东尼
摘要

目录 文件压缩 ZipOutputStream文件解压:ZipInputStream 文件压缩 ZipOutputStream    用ZipOutputStream来压缩一个文件夹时,要搭配ZipEntry来使用。ZipEnt

文件压缩 ZipOutputStream

   用ZipOutputStream来压缩一个文件夹时,要搭配ZipEntry来使用。ZipEntry是用来创建压缩文件的。

  举个例子,向压缩文件中添加一个文件的代码:

//zipOut:压缩文件的路径ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipOut));//zipOutputStream.putNextEntry()  ====> 向压缩包中添加一个文件//new ZipEntry("text1.txt") ======⇒ zip压缩包中文件都是用ZipEntry对象,//"text1.txt"===》是文件在压缩文件的路径,text1.txt表示在压缩文件的根路径zipOutputStream.putNextEntry(new ZipEntry("text1.txt"));

如下图:
在这里插入图片描述


  在创建ZipEntry对象时可以指定文件在压缩包的位置:new ZipEntry(“second-dir\second-01.txt”)


在这里插入图片描述
  在使用ZipOutputStream压缩文件时要注意的地方就是这些,下面给一个压缩文件的代码:

    static final int  BUFFER_SIZE = 4 << 10;        public void zip(String dir,String zipPath,String destZipName) throws ioException {        File file = new File(dir);                String path = file.getParentFile().getAbsolutePath();        if(isNull(destZipName))destZipName = file.getName()+".zip";        if(isNull(zipPath)) zipPath = path;        String zipOut = zipPath + File.separator + destZipName;        File zipOutFile = new File(zipOut);        if(!zipOutFile.getParentFile().exists()){            zipOutFile.getParentFile().mkdirs();        }                       ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipOut));        if(!file.isDirectory())zipOutputStream.close();        File[] subFiles = file.listFiles();        for (File subFile : subFiles) {            buildZipDir(zipOutputStream,subFile,null);        }        zipOutputStream.close();    }    void buildZipDir(ZipOutputStream zipOut,File file,String baseDir) throws IOException {        if(file.isFile()){            String zipEntryName = baseDir == null ? file.getName() : baseDir+File.separator+file.getName();            zipOut.putNextEntry(new ZipEntry(zipEntryName));            byte[] buffer = new byte[BUFFER_SIZE];            try(InputStream inputStream = new FileInputStream(file)){                int len = -1;                while((len = inputStream.read(buffer)) != -1){                    zipOut.write(buffer,0,len);                }                zipOut.flush();                zipOut.closeEntry();            }        }        else{//文件是dir,继续递归找文件            File[] subFiles = file.listFiles();            if(subFiles.length ==0){//处理空文件夹                String zipName = baseDir == null ? file.getName() :baseDir + File.separator+ file.getName() ;                zipOut.putNextEntry(new ZipEntry(zipName));                zipOut.closeEntry();            }else{                for (File subFile : subFiles) {                    String subBaseDir =baseDir == null ? file.getName() :baseDir + File.separator+ file.getName() ;                    buildZipDir(zipOut,subFile,subBaseDir);                }            }        }    }    public boolean isNull(String str){        return str == null || str.equals("");    }

测试

    @Test    public void testZip() throws IOException {     String dir = "D:\\test-zip";     //dir : 要压缩的目录     //D:\\yy\\    指定压缩文件的位置     //path-test.zip 指定压缩文件的名字     zip(dir,"D:\\yy\\","path-test.zip");    }


文件解压:ZipInputStream

  ZipInputStream读取压缩文件,配合ZipFile使用;通过上面的例子,我们知道压缩包里的是一个个ZipEntry对象,在解压时,可以遍历压缩包获取到ZipEntry对象。每一个ZipEntry对象都是一个文件,使用ZipFile可以获取到每一个ZipEntry对象的文件流;获取到文件流就可以将压缩包的文件读出来了。

    public void unZip(String zipPath,String unzipPath) throws IOException {        File file = new File(zipPath);        ZipFile zipFile = new ZipFile(file);//zip文件        ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(file));        if(isNull(unzipPath))unzipPath = zipPath.replace(".zip","");        ZipEntry nextEntry = null;        while( (nextEntry = zipInputStream.getNextEntry()) != null){            String name = nextEntry.getName();            String fileOutPath = unzipPath + File.separator + name;            File fileOut = new File(fileOutPath);            if(!fileOut.getParentFile().exists()){                fileOut.getParentFile().mkdirs();            }            if(!fileOut.exists()){                fileOut.createNewFile();            }            OutputStream  output = new FileOutputStream(fileOutPath);            InputStream inputStream = zipFile.getInputStream(nextEntry);//通过ZipFile获取到ZipEntry的文件流            int read = -1;            byte[] buffer = new byte[BUFFER_SIZE];            while((read = inputStream.read(buffer) ) != -1){                output.write(buffer,0, read);            }            output.flush();            output.close();            inputStream.close();        }        zipInputStream.close();        zipFile.close();    }

测试:

   public void testUnzip() throws IOException {        String zip = "D:\\yy\\path-test.zip";        unZip(zip,null);    }

在这里插入图片描述

来源地址:https://blog.csdn.net/m0_37550986/article/details/131198351

--结束END--

本文标题: Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream

本文链接: https://www.lsjlt.com/news/372061.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream
    目录 文件压缩 ZipOutputStream文件解压:ZipInputStream 文件压缩 ZipOutputStream    用ZipOutputStream来压缩一个文件夹时,要搭配ZipEntry来使用。ZipEnt...
    99+
    2023-08-16
    java ZipInputStream ZipOutputStream zip
  • Java压缩与解压缩ZIP文件
    文章目录 前言Java解压缩文件压缩和解压缩ZIP文件检验应用总结 前言 在现代计算机上,数据传输和存储越来越依赖于文件压缩技术。当我们需要发送大量数据时,压缩文件可以大大减少传输时间...
    99+
    2023-09-11
    java zip 压缩文件 解压缩文件 ZipOutputStream
  • Java实现文件压缩为zip和解压zip压缩包
    目录压缩成.zip解压.zip压缩成.zip 代码如下: public static void toZip(String srcDir, OutputStream out) th...
    99+
    2024-04-02
  • Java如何实现文件压缩为zip和解压zip压缩包
    本篇内容介绍了“Java如何实现文件压缩为zip和解压zip压缩包”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!压缩成.zip代码如下:pu...
    99+
    2023-07-02
  • 里有Java如何实现压缩与解压zip文件
    里有Java如何实现压缩与解压zip文件?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java解压缩zip - 多个文件(包括文件夹),对多个文件和文件夹进行压...
    99+
    2023-05-31
    java ava zip
  • java工具类 - 实现文件压缩zip及解压缩
    对hutool工具类进行的封装 依赖 cn.hutool hutool-all 5.8.15 ...
    99+
    2023-10-28
    java
  • Java如何实现ZIP压缩与解压
    Java如何实现ZIP压缩与解压,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(de...
    99+
    2023-06-17
  • go怎么压缩和解压zip文件
    本篇内容主要讲解“go怎么压缩和解压zip文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go怎么压缩和解压zip文件”吧!压缩zipfunc Zip(dest strin...
    99+
    2023-07-02
  • 3.7Python之解压缩ZIP文件
      zip文件格式是通用的文档压缩标准。自1.6版本起,Python中zipfile模块能够直接处理zip文件里的数据,例如需要将对应目录或多个文件打包或压缩成zip格式,或者需要查看一个zip格式的归档文件中部分或者所有文件同...
    99+
    2023-01-31
    解压缩 文件 Python
  • go压缩解压zip文件源码示例
    目录压缩zip解压zip压缩zip func Zip(dest string, paths ...string) error { zfile, err := os.Creat...
    99+
    2024-04-02
  • Python文件的压缩与解压
    目录前言:1、压缩整个文件夹2、压缩指定扩展名文件3、获取指定类型的待压缩文件列表4、解压文件前言: Python在人工智能,后台服务等领域中得到了广泛应用。由于python有着大量...
    99+
    2024-04-02
  • 利用Java实现zip压缩/解压缩 (转)
    利用Java实现zip压缩/解压缩 (转)[@more@]利用Java实现zip压缩/解压缩---摘自互联网  由于网络带宽有限,所以数据文件的压缩有利于数据在Inte.NET上的快速传输,同时也节 省服务器的外存空间。   Java 1....
    99+
    2023-06-03
  • java如何解压与压缩文件夹
    这篇文章将为大家详细讲解有关java如何解压与压缩文件夹,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。注意:JDK7支持设置编码设置编码格式 zipFile,zipInputStream,zipOutpu...
    99+
    2023-05-31
    java
  • 【Java 基础篇】Java Zip压缩:简化文件和文件夹的压缩操作
    文章目录 导言一、Zip压缩简介二、压缩文件1. 创建压缩文件2. 压缩多个文件3. 压缩文件夹 三、解压缩文件1、解压缩文件 总结 导言 在Java开发中,经常会遇到需要对文件和文件夹进行压缩和解压缩的需求。J...
    99+
    2023-08-17
    java python php
  • Win10如何使用自带压缩、解压zip压缩文件功能
      Windows系统自带不少工具,到了Win10,好用的功能依然保留,比如压缩/解压zip压缩文件的功能。压缩文件能为系统节省空间,这一功能必不可少。Win10如何使用压缩/解压zip压缩文件功能?   Win10压缩...
    99+
    2023-06-10
    Win10 压缩 功能 自带 压缩文件
  • java 文件压缩zip【两种方式】
     一、普通方式 package com.hebta.source.code.util;import java.io.*;import java.util.zip.ZipEntry;import java.util.zip.ZipOutput...
    99+
    2023-08-31
    java 开发语言 spring boot idea
  • 如何利用Java实现zip压缩解压缩
    小编给大家分享一下如何利用Java实现zip压缩解压缩,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  zip压缩文件结构:一个zip文件由多个entry组成,每...
    99+
    2023-06-03
  • java中zip怎么压缩多个文件
    在Java中,你可以使用java.util.zip.ZipOutputStream类来压缩多个文件。以下是一个简单的例子来演示如何压...
    99+
    2024-03-14
    java
  • Python实现rar、zip和7z文件的压缩和解压
    一、7z压缩文件的压缩和解压 1、安装py7zr 我们要先安装py7zr第三方库: pip install py7zr 如果python环境有问题,执行上面那一条安装语句老是安装在默认的python环...
    99+
    2023-09-20
    python
  • 如何在C#中压缩和解压rar、zip文件
    这期内容当中小编将会给大家带来有关如何在C#中压缩和解压rar、zip文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在C#.NET中压缩解压rar文件rar格式是一种具有专利文件的压缩格式,是一种商业...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作