File outFileDir = new File(outDir);
if (!outFileDir.exists()) {
    boolean isMakDir = outFileDir.mkdirs();
    if (isMakDir) {
        log.info("创建压缩目录成功");
    }
}
ZipFile zip = new ZipFile(zipFile, "gbk");
for (Enumeration enumeration = zip.getEntries(); enumeration.hasMoreElements(); ) {
    ZipEntry entry = (ZipEntry) enumeration.nextElement();
    String zipEntryName = entry.getName();
    InputStream in = zip.getInputStream(entry);

    if (entry.isDirectory()) {      //处理压缩文件包含文件夹的情况
        File fileDir = new File(outDir + zipEntryName);
        fileDir.mkdir();
        continue;
    }

    File file = new File(outDir, zipEntryName);
    file.createNewFile();
    OutputStream out = new FileOutputStream(file);
    byte[] buff = new byte[1024];
    int len;
    while ((len = in.read(buff)) > 0) {
        out.write(buff, 0, len);
    }
    in.close();
    out.close();
}