• 大小: 124KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Java
  • 标签: zip4j  java  zip  

资源简介

zip带密码压缩解压缩工具类,支持中文文件名,支持密码

资源截图

代码片段和文件信息

package com.whty.api.common.util;

import java.io.File;  
import java.util.ArrayList;  
import java.util.List;  
  

import org.apache.commons.lang3.StringUtils;  
  

import net.lingala.zip4j.core.ZipFile;  
import net.lingala.zip4j.exception.ZipException;  
import net.lingala.zip4j.model.FileHeader;  
import net.lingala.zip4j.model.ZipParameters;  
import net.lingala.zip4j.util.Zip4jConstants;  

/** 
 * ZIP压缩文件操作工具类 
 * 支持密码 
 * 依赖zip4j开源项目(http://www.lingala.net/zip4j/) 
 * 版本1.3.1 
 * @author ninemax 
 */
public class CompressUtil {  
      
    /** 
     * 使用给定密码解压指定的ZIP压缩文件到指定目录 
     * 

 
     * 如果指定目录不存在可以自动创建不合法的路径将导致异常被抛出 
     * @param zip 指定的ZIP压缩文件 
     * @param dest 解压目录 
     * @param passwd ZIP文件的密码 
     * @return 解压后文件数组 
     * @throws ZipException 压缩文件有损坏或者解压缩失败抛出 
     */  
    public static File [] unzip(String zip String dest String passwd) throws ZipException {  
        File zipFile = new File(zip);  
        return unzip(zipFile dest passwd);  
    }  
      
    /** 
     * 使用给定密码解压指定的ZIP压缩文件到当前目录 
     * @param zip 指定的ZIP压缩文件 
     * @param passwd ZIP文件的密码 
     * @return  解压后文件数组 
     * @throws ZipException 压缩文件有损坏或者解压缩失败抛出 
     */  
    public static File [] unzip(String zip String passwd) throws ZipException {  
        File zipFile = new File(zip);  
        File parentDir = zipFile.getParentFile();  
        return unzip(zipFile parentDir.getAbsolutePath() passwd);  
    }  
      
    /** 
     * 使用给定密码解压指定的ZIP压缩文件到指定目录 
     * 

 
     * 如果指定目录不存在可以自动创建不合法的路径将导致异常被抛出 
     * @param zip 指定的ZIP压缩文件 
     * @param dest 解压目录 
     * @param passwd ZIP文件的密码 
     * @return  解压后文件数组 
     * @throws ZipException 压缩文件有损坏或者解压缩失败抛出 
     */  
    public static File [] unzip(File zipFile String dest String passwd) throws ZipException {  
        ZipFile zFile = new ZipFile(zipFile);  
        zFile.setFileNameCharset(“GBK“);  
        if (!zFile.isValidZipFile()) {  
            throw new ZipException(“压缩文件不合法可能被损坏.“);  
        }  
        File destDir = new File(dest);  
        if (destDir.isDirectory() && !destDir.exists()) {  
            destDir.mkdir();  
        }  
        if (zFile.isEncrypted()) {  
            zFile.setPassword(passwd.toCharArray());  
        }  
        zFile.extractAll(dest);  
          
        @SuppressWarnings(“unchecked“)
List headerList = zFile.getFileHeaders();  
        List extractedFileList = new ArrayList();  
        for(FileHeader fileHeader : headerList) {  
            if (!fileHeader.isDirectory()) {  
                extractedFileList.add(new File(destDirfileHeader.getFileName()));  
            }  
        }  
        File [] extractedFiles = new File[extractedFileList.size()];  
        extractedFileList.toArray(extractedFiles);  
        return extractedFiles;  
    }  
      
    /** 
     * 压缩指定文件到当前文件夹 
     * @param src 要压缩的指定文件 


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-02-22 16:46  zip带密码压缩解压缩\
     文件       10107  2017-02-22 16:20  zip带密码压缩解压缩\CompressUtil.java
     文件      131025  2017-02-22 14:34  zip带密码压缩解压缩\zip4j_1.3.2.jar

评论

共有 条评论