使用java中的java.util.zip工具解压zip文件

硅谷探秘者 Md java基础 1222 0 0

核心类 ZipInputStream 的api文档请参考:
https://nowjava.com/docs/java-api-11/java.base/java/util/zip/ZipInputStream.html

关于zip压缩的代码参考:http://www.jiajiajia.club/blog/artical/1en1qpemej45/499

java代码

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;

public class ZipInPutTest {
    public static void main(String[] args) throws Exception{

        File file = new File("D:\\data\\ziptest\\test.zip");

        // 文件输入流(需要解压的文件)
        BufferedInputStream bufferedInputStream
                = new BufferedInputStream(
                        new FileInputStream(file));
        ZipInputStream zipInputStream = new ZipInputStream(bufferedInputStream);

        // 压缩文件实例,为了获取ZipEntry的内容
        ZipFile zipFile = new ZipFile(file);

        // 文件解压保存的地方
        String path = "D:\\data\\ziptest\\test\\";

        ZipEntry zipEntry;
        while ((zipEntry=zipInputStream.getNextEntry())!=null){
            // zipEntry 是一个文件夹
            if(zipEntry.isDirectory()){
                File directory = new File(path+zipEntry.getName()+"\\");
                if(!directory.exists()){
                    directory.mkdirs();
                }
            }else{
                // zipEntry 是一个文件
                // outFile 创建并输出到本地文件
                File outFile = new File(path+zipEntry.getName());
                // 文件输出流
                BufferedOutputStream bufferedOutputStream =
                        new BufferedOutputStream(
                                new FileOutputStream(outFile));

                // 获取ZipEntry的文件流
                InputStream inputStream = zipFile.getInputStream(zipEntry);
                byte[] b = new byte[1024];
                int length;
                while ((length=inputStream.read(b))!=-1){
                    // 写入到本地文件
                    bufferedOutputStream.write(b,0,length);
                }
                inputStream.close();
                bufferedOutputStream.close();
            }
        }
        zipInputStream.close();
        bufferedInputStream.close();
        zipFile.close();
    }
}

评论区
请写下您的评论...
暂无评论...
猜你喜欢
java基础 1212 核心类ZipOutputStreamapi档请参考:https://nowjava.com/docs/java-api-11/java.base/java/util/zip
工具 1647 javazip类packagecom.dzqc.yx.util;importjava.io.File;importjava.io.FileInputStream
工具 1853 packageunzip;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.util.Enumeration;importjava.util.zip.ZipEntry;importjava.util.zip.ZipFile;
算法基础 1938 前端项目正式发布时一般需要混淆缩js、css等,一方面缩能够使体积更小,更多节约网络io资源,另一方面能避免被人读懂你代码!!!!!!可以使uglifyjs2。安装通过npm安
工具 3213 xml如下:soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd="http://www.
java虚拟机(jvm) 2196 jmap是java虚拟机自带一种内存映像,我们可以通过该配合不同参数来查看java虚拟机内存详细信息(如程序出现所有对象数量以及占内存大小等),以及通过虚拟机内存使情况来定
minio 1952 rclone下载地址:https://rclone.org/downloads/ 包: unziprclone-v1.59.0-linux-amd64.zip cdcdrclone
算法基础 2222 什么是jxlsjxls是一个简单、轻量级excel导出库,使特定标记在excel模板来定义输出格式和布局。其实java成熟excel导出有pol、jxl,但他们都是使java
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1 2024-08  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript 加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。