本文实例讲述了java实现一次性压缩多个文件到zip中的方法。分享给大家供大家参考,具体如下:

1.需要引入包:import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

import org.springframework.util.StringUtils;

2.代码/**

* @Title: compress

* @Description: TODO

* @param filePaths 需要压缩的文件地址列表(绝对路径)

* @param zipFilePath 需要压缩到哪个zip文件(无需创建这样一个zip,只需要指定一个全路径)

* @param keepDirStructure 压缩后目录是否保持原目录结构

* @throws IOException

* @return int  压缩成功的文件个数

*/

public static int compress(List filePaths, String zipFilePath,Boolean keepDirStructure) throws IOException{

byte[] buf = new byte[1024];

File zipFile = new File(zipFilePath);

//zip文件不存在,则创建文件,用于压缩

if(!zipFile.exists())

zipFile.createNewFile();

int fileCount = 0;//记录压缩了几个文件?

try {

ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));

for(int i = 0; i

String relativePath = filePaths.get(i);

if(StringUtils.isEmpty(relativePath)){

continue;

}

File sourceFile = new File(relativePath);//绝对路径找到file

if(sourceFile == null || !sourceFile.exists()){

continue;

}

FileInputStream fis = new FileInputStream(sourceFile);

if(keepDirStructure!=null && keepDirStructure){

//保持目录结构

zos.putNextEntry(new ZipEntry(relativePath));

}else{

//直接放到压缩包的根目录

zos.putNextEntry(new ZipEntry(sourceFile.getName()));

}

//System.out.println("压缩当前文件:"+sourceFile.getName());

int len;

while((len = fis.read(buf)) > 0){

zos.write(buf, 0, len);

}

zos.closeEntry();

fis.close();

fileCount++;

}

zos.close();

//System.out.println("压缩完成");

} catch (Exception e) {

e.printStackTrace();

}

return fileCount;

}

3.测试public static void main(String[] args) throws IOException {

List sourceFilePaths = new ArrayList();

sourceFilePaths.add("d:/test/C08065.jpg");

sourceFilePaths.add("d:/test/新建文件夹/C08984.jpg");

sourceFilePaths.add("d:/test/找不到我.jpg");//试一个找不到的文件

//指定打包到哪个zip(绝对路径)

String zipTempFilePath = "D:/test/test.zip";

//调用压缩

int s = compress(sourceFilePaths, zipTempFilePath,false);

System.out.println("成功压缩"+s+"个文件");

}

java 压缩多个文件_java实现一次性压缩多个文件到zip中的方法示例相关推荐

  1. java操作mysql导表_Java实现批量导入excel表格数据到数据库中的方法

    本文实例讲述了Java实现批量导入excel表格数据到数据库中的方法.分享给大家供大家参考,具体如下: 1.创建导入抽象类 package com.gcloud.common.excel; impor ...

  2. 网页java在div输出内容_JS实现读取xml内容并输出到div中的方法示例

    本文实例讲述了JS实现读取xml内容并输出到div中的方法.分享给大家供大家参考,具体如下: note.xml文件结构: George John Reminder a John Reminder Ge ...

  3. java io操作压缩文件_Java操作zip-压缩和解压文件

    一.说明 rar格式的压缩包收费,java支持zip格式的压缩和解压 二.工具类 import java.io.*; import java.util.Enumeration; import java ...

  4. java 输入流可以合并吗_Java 使用IO流实现大文件的分割与合并实例详解

    java 使用IO流实现大文件的分割与合并 文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一台电脑, 但是你的存储设备(比如SD卡)只有1G ,这个时 ...

  5. java编译找不到文件_java报错找不到文件解决方法

    刚开始编写java代码时,肯定会遇到各种各样的bug,当然对于初学者这也是能理解的,首先来说一个比较常见的错误,如下: 一般编写新的程序时,都是从Hello,World开始的,比如在DOS上运行jav ...

  6. java合并txt文件_Java程序将两个txt文件合并为第三个txt文件 - Break易站

    让给定的两个文件是file1.txt和file2.txt.我们的任务是将两个文件合并到第三个文件,例如file3.txt,但合并应该逐行进行.以下是交替合并的步骤. 为file3.txt创建Print ...

  7. java io流读取txt文件_Java使用IO流读取TXT文件

    通过BufferedReader读取TXT文件 window系统默认的编码是GBK,而IDE的编码多数为UTF-8,如果没有规定new InputStreamReader(new FileInputS ...

  8. java ftp上传文件_jaVA使用FTP上传下载文件的问题

    为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...

  9. .gitignore文件_Java小白入门,Git忽略文件.gitignore详解

    在工程中,并不是所有文件都需要保存到版本库中的,例如"target"目录及目录下的文件就可以忽略.在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件 ...

最新文章

  1. python基础教程:操作符
  2. Linux下配置DNS
  3. 分享一个在线的HTML5元素在线测验 : HTML5 Element Quiz
  4. Ubuntu 16.04将ISO镜像写入U盘
  5. 蘑菇丁周记范文计算机销售40篇,毕业生实习周记及销售实习周记范文 毕业生蘑菇钉周记范文(最新)...
  6. 手写字体研究-matlab
  7. 设置hyper-v虚拟机的enhanced session mode
  8. android n改铃声,来电铃声自定义,我”响“你快乐!
  9. MAC电脑制作iPhone手机铃声
  10. input框监听输入法输入中文
  11. android 强制开启wifi,强制Android使用无网络的Wifi网络
  12. Redis——Redis事务性原理
  13. Onvif再学习---MiniXml-介绍
  14. 三极管和MOS管的应用与区别
  15. 模仿新浪微博雷达搜索动画效果
  16. 开发者来稿|AMD赛灵思中文论坛分享 - 提问的智慧
  17. android 跳转播放器,跳转音乐播放器
  18. 体系建模系统:体系结构建模工具攻略
  19. 计算机网络----UDP首部及校验和计算
  20. git 码云 新建仓库

热门文章

  1. CheckedListBox与下拉框联动代码
  2. POJ 1556 The Doors (未完)
  3. [Step By Step]SAP HANA PAL 数据处理抽样算法Sampling实例SAMPLING
  4. 网络营销的探索与爆发
  5. tensorflow之transpose的使用
  6. 概率整形 Peobabilistic Shaping PS
  7. FFmpeg视频转码技巧之-crf参数(H.264篇)
  8. C语言不用文件系统读取文件,C语言-基础教程-非缓冲文件系统
  9. 1-uboot流程——概述
  10. text段,data段,bss段,堆和栈