packagecom.m2plat.puhui.utils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;import java.io.*;importjava.util.zip.ZipEntry;importjava.util.zip.ZipOutputStream;/*** 文件压缩工具类

* Created by xiangzh on 2018/11/20.*/

public classZipUtils {private static Logger logger = LoggerFactory.getLogger(ZipUtils.class);privateZipUtils(){

}public static void doCompress(String srcFile, String zipFile) throwsIOException {

doCompress(new File(srcFile), newFile(zipFile));

}/*** 文件压缩

*@paramsrcFile 目录或者单个文件

*@paramzipFile 压缩后的ZIP文件*/

public static void doCompress(File srcFile, File zipFile) throwsIOException {

ZipOutputStream out= null;try{

out= new ZipOutputStream(newFileOutputStream(zipFile));

doCompress(srcFile, out);

}catch(Exception e) {throwe;

}finally{

out.close();//记得关闭资源

}

}public static void doCompress(String filelName, ZipOutputStream out) throwsIOException{

doCompress(newFile(filelName), out);

}public static void doCompress(File file, ZipOutputStream out) throwsIOException{

doCompress(file, out,"");

}public static void doCompress(File inFile, ZipOutputStream out, String dir) throwsIOException {if( inFile.isDirectory() ) {

File[] files=inFile.listFiles();if (files!=null && files.length>0) {for(File file : files) {

String name=inFile.getName();if (!"".equals(dir)) {

name= dir + "/" +name;

}

ZipUtils.doCompress(file, out, name);

}

}

}else{

ZipUtils.doZip(inFile, out, dir);

}

}public static void doZip(File inFile, ZipOutputStream out, String dir) throwsIOException {

String entryName= null;if (!"".equals(dir)) {

entryName= dir + "/" +inFile.getName();

}else{

entryName=inFile.getName();

}

ZipEntry entry= newZipEntry(entryName);

out.putNextEntry(entry);int len = 0;byte[] buffer = new byte[1024];

FileInputStream fis= newFileInputStream(inFile);while ((len = fis.read(buffer)) > 0) {

out.write(buffer,0, len);

out.flush();

}

out.closeEntry();

fis.close();

}public static void doZip(InputStream in ,ZipOutputStream out, String entryName) throwsIOException {

logger.info("---添加InputStream到压缩文件,InputStream大小:{}",in.available());

ZipEntry entry= newZipEntry(entryName);

out.putNextEntry(entry);int len = 0;byte[] buffer = new byte[1024*5];while ((len = in.read(buffer)) > 0) {

out.write(buffer,0, len);

out.flush();

}

out.closeEntry();

in.close();

}public static void main(String[] args) throwsIOException {

doCompress("D:/excel/puhui/1", "D:/附件.zip");

}

}

java apache压缩多个文件大小_Java压缩多个文件并导出相关推荐

  1. java中字符串压缩成bcd码_Java 压缩 / 解压缩字符串

    Java使用压缩库为常规压缩提供了Deflater类.它还提供了DeflaterOutputStream,它使用Deflater类通过压缩(压缩)数据流,然后将压缩后的数据写入另一个输出流来过滤数据流 ...

  2. java 监听窗口是否改变_JAVA项目监听文件是否发生变化

    一.spring容器都初始化完成之后做操作 packagecom.bijian.study.listener;importorg.springframework.beans.factory.annot ...

  3. Java获取文档页数_java准确读取word文件页数

    由于本人在做一个网上打印网站,遇到了一个需求是"准确读取word文件页数,从而实现计费功能",通过很长时间的学习.查资料后,终于解决了这个问题,因此把方法写出来,方便有同样需求的人 ...

  4. 小白也会Java软件打包EXE(直接生成一个exe安装文件)

    前言:Java软件程序以其跨平台的特性被广泛使用于各类操作系统中,目前有部分需求是需要将Java程序打包成EXE可执行文件,可以实现在任意一台Windows系统下安装使用,而不需要冗余的资源文件,只要 ...

  5. java下载图片压缩包_java压缩文件和下载图片示例

    本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml 项目的主页 主页主页 湖南长沙 发布方式一...... 页面内容压缩演示--gzip 下载图片 ...

  6. java 压缩 空目录_java zip压缩与解压-支持空目录,保留文件修改时间

    java zip压缩与解压-支持空目录,保留文件修改时间. 依赖于commons-io,commons-compress [Java]代码 import java.io.BufferedInputSt ...

  7. java文件压缩与解压_Java实现文件压缩与解压

    Java实现ZIP的解压与压缩功能基本都是使用了Java的多肽和递归技术,可以对单个文件和任意级联文件夹进行压缩和解压,对于一些初学者来说是个很不错的实例.(转载自http://www.puiedu. ...

  8. java如何压缩解压图片_Java实现压缩文件与解压缩文件

    由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或 ...

  9. java zip压缩 加密码_java 压缩成zip文件、解压zip文件(可设置密码)

    1.情景展示 java实现将文件夹进行压缩打包的功能及在线解压功能 2.解决方案 方式一:压缩.解压zip 准备工作:slf4j-api.jar org.slf4j slf4j-api 1.7.25 ...

最新文章

  1. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集
  2. jquery拓展插件开发
  3. 【比赛】论如何七天内在研究生电子设计竞赛中拿国奖
  4. zeekooper集群搭建_How to do - ZooKeeper集群搭建(我见过最详细的完整教学)
  5. UPLOOKING_APUE
  6. 机器学习 -- 信息论
  7. idea样式报错_来自强迫症患者的IDEA设置
  8. ajax json 403,解决 Ajax 发送 post 请求出现 403 Forbidden 的三种方式
  9. Alibaba之MySQL宝典_阿里巴巴内部 MySQL宝典 意外流出!极致经典,堪称数据库的天花板...
  10. python密码传参有特殊字符如何解决_Python为什么我在RSA加密中有特殊字符
  11. pandas读取csv某一列_让pandas处理大数据速度变快的三个技巧
  12. linux 下  qserialport waitforreadyread_北师大版初中数学八年级(下)第二章第一节不等关系(精品)...
  13. Go语言---并发编程goroutine
  14. 4.1 API : MultinomialNB、GaussianNB、BernoulliNB
  15. android智能电视直播源抓取教程,求人不如求己,教你自己抓取直播源的方法!...
  16. Wonderwar-InTouch-配方配置
  17. 通过Kettle工具解析Json接口数据并且保存到数据库中的详细操作
  18. 子桓说:被强制996工作制?用这种方法逃离最靠谱
  19. 怎样将纸质文档转换成图片,然后转换成word文字
  20. 计算机显示器型号参数单价,飞利浦电脑显示器价格表一览【详解】

热门文章

  1. R语言ggplot2可视化指定保存到pdf的图像的具体尺寸、保证缩放的一致性:使得绘图元素(文本、点大小等)在设计上都具有相同的绝对大小、设置全局数据点大小、主题格式、设置图像保存的具体尺寸
  2. R语言optim函数进行函数优化实战(和lm函数进行对比)
  3. R语言绘图设备dev
  4. python爬虫自学笔记分析解密_Python爬虫自学系列(七) -- 项目实战篇(一)
  5. 神经网络(Neural Network)
  6. Linux 安装Boost
  7. 学习C++ 丨 类(Classes)的定义与实现!C/C++必学知识点!
  8. B站《一天学会 MySQL 数据库》学习笔记
  9. SQLite - 下载安装与使用(Command Line Shell For SQLite)
  10. Assembly and diploid architecture of an individual human genome via single-molecule technologies