解压包含文件夹的压缩包

/**
     * 解压含有文件夹的压缩包
     * @param zipFile 解压的路径
     * @param targetDir 目标路径
     */
public void unZip(String zipFile, String targetDir) {
        int BUFFER = 4096; //缓冲区
        String strEntry; //保存每个zip的条目名称
        try {
            BufferedOutputStream dest = null; 
            FileInputStream fis = new FileInputStream(zipFile);
            ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
            ZipEntry entry; //每个zip条目的实例
            while ((entry = zis.getNextEntry()) != null) {
                try {
               
                    int count;
                    byte data[] = new byte[BUFFER];
                    strEntry = entry.getName();
                    File entryFile = new File(targetDir + "/" + strEntry);
                    File entryDir = new File(entryFile.getParent());
                    if (!entryDir.exists()) {
                        entryDir.mkdirs();
                    } else {
                        if (!entryFile.isDirectory()) {
                            if (!entryFile.exists()) {
                                entryFile.mkdirs();
                            }
                        } else {
                            if (!entryFile.exists()) {
                                entryFile.createNewFile();
                            }
                            FileOutputStream fos = new FileOutputStream(entryFile);
                            dest = new BufferedOutputStream(fos, BUFFER);
                            while ((count = zis.read(data, 0, BUFFER)) != -1) {
                                dest.write(data, 0, count);
                            }
                            dest.flush();
                            dest.close();
                        }
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
            zis.close();
        } catch (Exception cwj) {
            cwj.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值