java图片打包_Java将多张图片合并打包成zip格式进行下载

package com.kexin.locatorService.utils;

import com.kexin.locatorService.pojo.Assets;

import org.apache.commons.lang.StringUtils;

import java.io.*;

import java.util.ArrayList;

import java.util.List;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;/**

* @ProjectName: iot

* @Package: com.kexin.locatorService.utils

* @ClassName: ZipMultiFileUtil

* @Author: luqiming

* @Description:

* @Date: 2020/12/29 16:17

* @Version: 1.0*/

public classZipMultiFileUtil {public static voidzipFiles(File[] srcFiles, File zipFile) {try{if (srcFiles.length != 0) {//判断压缩后的文件存在不,不存在则创建

if (!zipFile.exists()) {

zipFile.createNewFile();

}else{

zipFile.delete();

zipFile.createNewFile();

}//创建 FileInputStream 对象

FileInputStream fileInputStream = null;//实例化 FileOutputStream 对象

FileOutputStream fileOutputStream = newFileOutputStream(zipFile);//实例化 ZipOutputStream 对象

ZipOutputStream zipOutputStream = newZipOutputStream(fileOutputStream);//创建 ZipEntry 对象

ZipEntry zipEntry = null;//遍历源文件数组

for (int i = 0; i < srcFiles.length; i++) {//将源文件数组中的当前文件读入 FileInputStream 流中

fileInputStream = newFileInputStream(srcFiles[i]);//实例化 ZipEntry 对象,源文件数组中的当前文件

zipEntry = newZipEntry(srcFiles[i].getName());

zipOutputStream.putNextEntry(zipEntry);//该变量记录每次真正读的字节个数

intlen;//定义每次读取的字节数组

byte[] buffer = new byte[1024];while ((len = fileInputStream.read(buffer)) > 0) {

zipOutputStream.write(buffer,0, len);

}

}

zipOutputStream.closeEntry();

zipOutputStream.close();

fileInputStream.close();

fileOutputStream.close();

}

}catch(Exception e) {

e.printStackTrace();

}

}/**

* 将存放在sourceFilePath目录下的源文件,打包成fileName名称的zip文件,并存放到zipFilePath路径下

*

* @param sourceFilePath :待压缩的文件路径

* @param zipFilePath :压缩后存放路径

* @param fileName :压缩后文件的名称

* @return*/

public staticboolean fileToZip(String sourceFilePath, String zipFilePath, String fileName) {

boolean flag= false;

File sourceFile= newFile(sourceFilePath);

FileInputStream fis= null;

BufferedInputStream bis= null;

FileOutputStream fos= null;

ZipOutputStream zos= null;if (sourceFile.exists() == false) {

System.out.println("待压缩的文件目录:" + sourceFilePath + "不存在");

sourceFile.mkdir();//新建目录

}try{

File zipFile= new File(zipFilePath + "/" +fileName);if(zipFile.exists()) {

System.out.println(zipFilePath + "目录下存在名字为:" + fileName + ".zip" + "打包文件.");

}else{

File[] sourceFiles=sourceFile.listFiles();if (null == sourceFiles || sourceFiles.length < 1) {

System.out.println("待压缩的文件目录:" + sourceFilePath + "里面不存在文件,无需压缩.");

}else{

fos= newFileOutputStream(zipFile);

zos= new ZipOutputStream(newBufferedOutputStream(fos));byte[] bufs = new byte[1024 * 10];for (int i = 0; i < sourceFiles.length; i++) {//创建ZIP实体,并添加进压缩包

ZipEntry zipEntry = newZipEntry(sourceFiles[i].getName());

zos.putNextEntry(zipEntry);//读取待压缩的文件并写进压缩包里

fis = newFileInputStream(sourceFiles[i]);

bis= new BufferedInputStream(fis, 1024 * 10);int read = 0;while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {

zos.write(bufs,0, read);

}

}

flag= true;

}

}

}catch(Exception e) {

e.printStackTrace();throw newRuntimeException(e);

}finally{//关闭流

try{if (null !=bis) bis.close();if (null !=zos) zos.close();

}catch(IOException e) {

e.printStackTrace();throw newRuntimeException(e);

}

}returnflag;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值