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

硅谷探秘者 java基础 824 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基础 822 核心类ZipOutputStreamapi档请参考:https://nowjava.com/docs/java-api-11/java.base/java/util/zip
工具 1335 javazip类packagecom.dzqc.yx.util;importjava.io.File;importjava.io.FileInputStream
工具 1450 packageunzip;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.util.Enumeration;importjava.util.zip.ZipEntry;importjava.util.zip.ZipFile;
算法基础 1312 前端项目正式发布时一般需要混淆缩js、css等,一方面缩能够使体积更小,更多节约网络io资源,另一方面能避免被人读懂你代码!!!!!!可以使uglifyjs2。安装通过npm安
工具 2909 xml如下:soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd="http://www.
java虚拟机(jvm) 1643 jmap是java虚拟机自带一种内存映像,我们可以通过该配合不同参数来查看java虚拟机内存详细信息(如程序出现所有对象数量以及占内存大小等),以及通过虚拟机内存使情况来定
minio 1326 rclone下载地址:https://rclone.org/downloads/ 包: unziprclone-v1.59.0-linux-amd64.zip cdcdrclone
算法基础 1665 什么是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
标签
算法基础 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
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。