java實現多個檔案以壓縮包匯出到本地
描述:使用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;
}
}
}