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

}

}

 

posted @ 2018-11-01 12:31  bud  阅读(3627)  评论(0编辑  收藏  举报