package com.ctitc.ibassess.util;
import java.io.File;
import java.util.ArrayList;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;
/**
* Zip文件工具类
* @author zongb
*/
public class FileEncryptCompressUtils {
public static void main(String []args){
String password = "12";
File file = new File("C:\\test\\myzip") ;
try {
// compressFiles2Zip(file.listFiles(),"C:\\test\\myzip.zip",password);
decompressZip("C:\\test\\myzip.zip","C:\\test\\test2", password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 把文件压缩成zip格式,支持文件夹和文件混合压缩
* @param files 需要压缩的文件或文件夹
* @param zipFileName 压缩后的zip文件路径 ,如"D:/test/aa.zip";
* @param password 密码
*/
public static boolean compressFiles2Zip(File[] files,String zipFileName,String password) throws Exception {
boolean result = false ;
if(files == null || files.length ==0 || zipFileName==null || !isEndsWithZip(zipFileName)) {
return result ;
}
ZipFile zipFile = new ZipFile(zipFileName);
ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
//设置密码
parameters.setEncryptFiles(true);
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
parameters.setPassword(password);
ArrayList<File> fileList = new ArrayList<File>();
for(File file:files){
if(file.isDirectory()){
//如果是文件夹的话
zipFile.addFolder(file, parameters);
}else{
//文件的话,最后一起添加
fileList.add(file);
}
}
//添加所有文件
zipFile.addFiles(fileList, parameters);
return true ;
}
/**
* 把zip文件解压到指定的文件夹
* @param zipFilePath zip文件路径, 如 "D:/test/aa.zip"
* @param saveFileDir 解压后的文件存放路径, 如"D:/test/"
* @param password 解压密码
* @throws Exception
*/
public static void decompressZip(String zipFilePath,String saveFileDir,String password) throws Exception {
if(!isEndsWithZip(zipFilePath)) {
return ;
}
ZipFile zipFile = new ZipFile(zipFilePath);
if (zipFile.isEncrypted()) {
zipFile.setPassword(password);
}
zipFile.extractAll(saveFileDir);
}
/**
* 判断文件名是否以.zip为后缀
* @param fileName 需要判断的文件名
* @return 是zip文件返回true,否则返回false
*/
public static boolean isEndsWithZip(String fileName) {
if(fileName == null || fileName.length() < 4) {
return false ;
}else{
return fileName.toUpperCase().endsWith(".ZIP") ;
}
}
}
java 压缩/解压缩zip文件-带密码
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- DAY 1 Vocabulary 1、Wind and solar energy are disruptinga ...