1. 程式人生 > >java實現多個檔案以壓縮包匯出到本地

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;
  }

}

}