描述:使用java將多個文件同時壓縮為壓縮包,並導出到本地
/**
*壓縮文件並導出
*/
public static void zipFiles() throws IOException {
File file = null;
String zipFileName = "";
File[] tempList = null;
file = new File("需要壓縮的文件夾名稱");
zipFileName = "/壓縮文件名稱.zip";
//壓縮文件夾下所有文件
tempList = file.listFiles();
//加密打包文件開始
ZipUtils.createZipFile(壓縮密碼,導出的壓縮文件包存儲路徑,zipFileName,tempList);
//加密打包文件結束
if(file.exists()) {
//刪除已打包的文件夾
file.delete();
}
}
打包文件幫助類如下:需要引入zip4j.jar
import java.io.File;
import java.util.ArrayList;
import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants;
public class ZipUtils {
/**
* 加密文件並導出
* @param file 要進行壓縮的文件
* @param password_zip 壓縮密碼
* @param templatepath_zip 壓縮包路徑
* @param fileName 壓縮文件名
* @return zip文件
*
*/
public static ZipFile createZipFile(String passwordZip, String templatePathZip, String fileName,File...files) {
try { // 創建zip包,指定了zip路徑和zip名稱
final ZipFile zipFile = new ZipFile(templatePathZip + fileName);
// 向zip包中添加文件集合
final ArrayList<File> fileAddZip = new ArrayList<File>();
File file1 = zipFile.getFile();
// 判斷是否存在
if (file1.exists()) {
file1.delete();
}
// 向zip包中添加文件
for(File file:files){
fileAddZip.add(file);
}
// 設置zip包的一些參數集合
final ZipParameters parameters = new ZipParameters();
// 是否設置密碼(若passwordZip為空,則為false)
if(null != passwordZip && !passwordZip.equals("")) {
parameters.setEncryptFiles(true);
// 壓縮包密碼
parameters.setPassword(passwordZip);
} else {
parameters.setEncryptFiles(false);
}
// 壓縮方式(默認值)
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
// 普通級別(參數很多)
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
// 加密級別
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
// 創建壓縮包完成
zipFile.createZipFile(fileAddZip, parameters);
//壓縮完成后刪除文件
for(File file:files){
file.delete();
}
return zipFile;
} catch (final ZipException e) {
e.printStackTrace();
return null;
}
}
}