描述:使用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;
  }

}

}

java实现多个文件以压缩包导出到本地的更多相关文章

  1. java项目中Excel文件的导入导出

    package poi.excel; import java.io.IOException; import java.io.InputStream; import java.io.OutputStre ...

  2. java如何压缩多个文件到压缩包,并下载到浏览器?

    java压缩多个文件到压缩包,并下载到浏览器   解决方法: 完整的方法如下,很简单,亲试有效,极力推荐. 我是以流作为文件,而不是file,循环把所有pdf文件压缩到pdf.zip压缩包中. 1.前 ...

  3. java 的在线下载文件 .pdf

    java  的在线下载文件  .pdf 1.下载资源的本地位置 2.设置响应头 3.下载代码 1 PeriodicalResource periodicalResource = periodicalR ...

  4. java压缩文件或文件夹并导出

    java压缩文件或文件夹并导出 tozipUtil: package com.zhl.push.Utils; import java.io.File; import java.io.FileInput ...

  5. java实现文件批量导入导出实例(兼容xls,xlsx)

    1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...

  6. JAVA实用案例之文件导入导出(POI方式)

    1.介绍 java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下. 目前我所接触过的导入导出技术主要有POI和iRepo ...

  7. JAVA实用案例之文件导出(JasperReport踩坑实录)

    写在最前面 想想来新公司也快五个月了,恍惚一瞬间. 翻了翻博客,因为太忙,也有将近五个多月没认真总结过了. 正好趁着今天老婆出门团建的机会,记录下最近这段时间遇到的大坑-JasperReport. 六 ...

  8. Java中使用jxl.jar将数据导出为excel文件

      Java对Excel文件的读写操作可由jxl.jar或poi.jar实现,这里使用jxl.jar完成对Excel文件的导出. 一.将Excel文件导出在本地 步骤:   创建文件 -> 创建 ...

  9. Java压缩多个文件并导出

    controller层: /** * 打包压缩下载文件 */ @RequestMapping(value = "/downLoadZipFile") public void dow ...

随机推荐

  1. 二、Redis安装

    一.下载Redis: 下载地址:https://github.com/MSOpenTech/redis/releases. 由于redis并不支持window系统,而window版本的redis的是由 ...

  2. windows常用快捷键和指令

    快捷键: Ctrl+鼠标滚轮:更改图标大小(桌面).缩放(开始屏幕) Ctrl+A:选择所有 Ctrl+C:复制 Ctrl+E:选择搜索框(资源管理器) Ctrl+N:新窗口(资源管理器) Ctrl+ ...

  3. 迁移git

    转自:https://www.darrenfang.com/2016/03/transferring-a-repository/ 因为更换服务器,需要将原来的 git 项目迁移到新的服务器上,需要保留 ...

  4. sql server查看表是否死锁

    1,查看那个表死锁 select object_name(resource_associated_entity_id) as tableName, request_session_id as pid ...

  5. JQ高级

    一.选择器 css语法选择器 $('css3 选择器位‘) 索引匹配 $('div:eq(0)') $('div').eq(0) 内容 $('div:contains(标签文本内容)') // 注:采 ...

  6. django集成celery

    Celery是一个基于分布式消息传递的开源异步任务队列,在django实际应用场景下,往往有一些较为耗时,但并不需要返回值的任务, 例如发送邮件,更新我们自己的统计数据库,这时我们可以将这些任务交由c ...

  7. ElasticSearch常用操作命令

    查看系统信息: curl 'http://username:password@192.168.0.40:9200/' curl 'http://username:password@127.0.0.1: ...

  8. Java EE Expression Language

    什么是EL? 形如这样(立即执行的): ${sessionScope.cart.total} 或者这样(延迟执行的): #{customer.name} 的表达式语言(Expression Langu ...

  9. PHP 消息队列 详解

    前言:之前做过的一些项目中有时候会接触到消息队列,但是对消息队列并没有一个很清楚的认知,本篇文章将会详细分析和归纳一些笔记,以供后续学习. 一.消息对列概念 从本质上说消息对列就是一个队列结构的中间件 ...

  10. Sublime Text3—设置快捷键打开浏览器

    在不同浏览器查看代码效果可谓是家常便饭,所以用不同快捷键对应打开不同浏览器可以大大提高工作效率. 本篇分享个简单的方法只需二步: 一.安装插件SideBarEnhancements ctrl+shif ...