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

}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM