JAVA解压ZIP文件

本文介绍了如何使用Java进行ZIP文件的解压缩操作。通过`ZipFile`类和相关流处理,遍历ZIP文件中的每个条目,创建必要的目录结构,并将文件内容解压到指定的目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;


public class ZipUtil {
    
    public static void unzip(String zipFile){
        // 要解压文件路径
        File file = new File(zipFile);
        if(!file.exists() || !file.isFile()){
            return;
        }
        // 文件当前文件夹
        String basePath = file.getParent();
        // 缓冲区大小
        int buffersize = 1024;
        int count = 0;
        // 缓冲区
        byte[] buffer = new byte[buffersize];
        try {
            // Zip文件
            ZipFile zfile = new ZipFile(file);
            // 获取Zip包里的所有元素
            Enumeration<ZipEntry> zips = (Enumeration<ZipEntry>) zfile.entries();
            // 遍历Zip包里的所有元素
            while(zips.hasMoreElements()){
                // 获取文件
                ZipEntry entry = zips.nextElement();
                // 文件名
                String name = entry.getName();
                // 解压后文件的全路径
                String filePath = basePath + File.separator + name;
                // 处理zip文件包含文件夹
                if(entry.isDirectory()){
                    System.out.println("isDirectory");
                    File path = new File(filePath);
                    if(!path.exists()){
                        path.mkdir();
                    }
                    continue;
                }
                // 获取压缩文件输入流
                InputStream in = zfile.getInputStream(entry);
                // 带缓冲的输入流
                BufferedInputStream bis = new BufferedInputStream(in);
                // 带缓冲的输入流
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
                // 从输入流中读取字节并写入输出流中
                while((count = bis.read(buffer, 0, buffersize)) != -1){
                    bos.write(buffer, 0, count);
                }
                // 释放资源
                bos.flush();
                bos.close();
                bos.close();
                
            }
            // 关闭文件
            zfile.close();
        } catch (ZipException e) {
            
        } catch (IOException e) {
            
        }
    }
    
    public static void main(String[] args) {
        ZipUtil.unzip("E:\\pics.zip");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值