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

硅谷探秘者 java基础 79 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基础 101 核心类ZipOutputStreamapi档请参考:https://nowjava.com/docs/java-api-11/java.base/java/util/zip
工具 622 javazip类packagecom.dzqc.yx.util;importjava.io.File;importjava.io.FileInputStream
工具 774 packageunzip;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.util.Enumeration;importjava.util.zip.ZipEntry;importjava.util.zip.ZipFile;
算法基础 201 前端项目正式发布时一般需要混淆缩js、css等,一方面缩能够使体积更小,更多节约网络io资源,另一方面能避免被人读懂你代码!!!!!!可以使uglifyjs2。安装通过npm安
工具 2247 xml如下:soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd="http://www.
java虚拟机(jvm) 652 jmap是java虚拟机自带一种内存映像,我们可以通过该配合不同参数来查看java虚拟机内存详细信息(如程序出现所有对象数量以及占内存大小等),以及通过虚拟机内存使情况来定
算法基础 485 什么是jxlsjxls是一个简单、轻量级excel导出库,使特定标记在excel模板来定义输出格式和布局。其实java成熟excel导出有pol、jxl,但他们都是使java
win rar 332 winrar(windows)自从电脑被p2p垃圾软恶意捆绑了一堆垃圾软后,对这种软有了后遗症。安装时候要小心。
归档
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月  6
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议
目录
祝愿神州十三飞行乘组平安归来