Java实现多文件压缩和解压缩代码

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.Enumeration;

import java.util.zip.ZipEntry;

import java.util.zip.ZipFile;

import java.util.zip.ZipOutputStream;

public class TestZIP {

/**

* 功能:压缩多个文件成一个zip文件

* @param srcfile:源文件列表

* @param zipfile:压缩后的文件

*/

public static void zipFiles(File[] srcfile, File zipfile) {

byte[] buf = new byte[1024];

try {

//ZipOutputStream类:完成文件或文件夹的压缩

ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipfile));

for (int i = 0; i < srcfile.length; i++) {

FileInputStream in = new FileInputStream(srcfile[i]);

out.putNextEntry(new ZipEntry(srcfile[i].getName()));

int len;

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

out.write(buf, 0, len);

}

out.closeEntry();

in.close();

}

out.close();

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

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 功能:解压缩

* @param zipfile:需要解压缩的文件

* @param descDir:解压后的目标目录

*/

public static void unZipFiles(File zipfile, String descDir) {

try {

ZipFile zf = new ZipFile(zipfile);

for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {

ZipEntry entry = (ZipEntry) entries.nextElement();

String zipEntryName = entry.getName();

InputStream in = zf.getInputStream(entry);

OutputStream out = new FileOutputStream(descDir + zipEntryName);

byte[] buf1 = new byte[1024];

int len;

while ((len = in.read(buf1)) > 0) {

out.write(buf1, 0, len);

}

in.close();

out.close();

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

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**功能:

* @param args

*/

public static void main(String[] args) {

//2个源文件

File f1 = new File("D:\\test\\1.csv");

File f2 = new File("D:\\test\\2.xlsx");

File[] srcfile = { f1, f2 };

//压缩后的文件

File zipfile = new File("D:\\test\\3.zip");

TestZIP.zipFiles(srcfile, zipfile);

//需要解压缩的文件

File file = new File("D:\\test\\3.zip");

//解压后的目标目录

String dir = "D:\\test\\1\\";

TestZIP.unZipFiles(file, dir);

}

} 转自:http://blog.csdn.net/zdp072/article/details/44177925

java 解压与压缩代码_Java实现多文件压缩和解压缩代码详解相关推荐

  1. java游戏代码_Java与Kotlin系列文章之性能问题详解

    作者丨Jakub Anioła 译者丨姜雨生 策划丨田晓旭 随着对 Kotlin 越来越深入的了解,我发现市面上关于 Kotlin 方面,比较深入的资料几乎是 0,所以我决定,将 Kotlin 各个方 ...

  2. java中乱码产生的原因_java出现乱码的原因与解决方法详解

    java在字符串中统一用Unicode表示.(推荐:java视频教程) 对于任意一个字符串:String string = "测试字符串"; 如果源文件是GBK编码,操作系统默认环 ...

  3. java 判断请求为 ajax请求_Java后台判断ajax请求及处理过程详解

    一.问题描述: 当访问一个需要登录的页面时,会有过滤器或者拦截器进行过滤拦截,如果用户没有登录,则跳转到登录页面. 当用户已经登录进入系统后,然后长时间没操作,等到session过期后,再点击一个aj ...

  4. java中double的使用方法_java中double型数据如何四舍五入?详解

    下面以保存两位有效数字为例. 1.首先我们想到用先乘以100取整后再除以100.0这种做法: System.out.println(Math.round(4.015*100)/100.0); 执行结果 ...

  5. java重载与重写的例子_java 重载(overload)与重写(override)详解及实例

    很多同学对于overload和override傻傻分不清楚,建议不要死记硬背概念性的知识,要理解着去记忆. 先给出我的定义: overload(重载):在同一类或者有着继承关系的类中,一组名称相同,参 ...

  6. java解析日志数据_Java实时监控日志文件并输出的方法详解

    Java实时监控日志文件并输出的方法详解 想在前台显示数据同步过程中产生的日志文件,在网上找到解决方案,做了代码测试好用.这里做个记录 java.io.RandomAccessFile可以解决同时向文 ...

  7. java spring mvc 上传_Java Spring MVC 上传下载文件配置及controller方法详解

    下载: 1.在spring-mvc中配置(用于100M以下的文件下载) 下载文件代码 @RequestMapping("/file/{name.rp}") public Respo ...

  8. python zipfile压缩的文件用shell命令解压_Python学习第177课——bzip2、zip方式压缩文件和解压文件...

    之前我们学习了tar打包.解包.gzip压缩,现在我们学习gzip解压. ●gzip解压 现在我们把上节生成的压缩文件linux_compressed.gz进行解压,使用命令: tar -xzf li ...

  9. linux解压多个part rar,【linux】安装rar,并解压被压缩成多个rar的文件

    rar  官网:http://www.rarsoft.com/download.htm 选择  RAR for  linux   (注意你的系统是32位还是64位) 1 安装命令: $ cd /roo ...

  10. 关于将Java编译过的.class文件打成jar可执行文件/JAR详解

    常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像.chm 文档一样双击运行了:而另一种是使用 JET 来进行 ...

最新文章

  1. IE浏览器上传文件时本地路径变成”C:\fakepath\”的问题
  2. python运行时修改代码会怎样_python运行时修改代码的方法——monkey patch
  3. Day 1 用户交互
  4. [C++][数据结构]栈(stack)的实现
  5. VMware-server遇到问题的解决
  6. c#3.0系列:Object Initializer 和 Collection Initializer
  7. 特定场景下取代if-else和switch的方式
  8. Schema initialization FAILED! Metastore state would be inconsistent !!
  9. 微信小程序正确的异步request请求,根据经纬度获取地理位置信息
  10. 禁止摄像机跟随`Actor`旋转 Learn Unreal Engine (with C++)
  11. python 字典处理_Python3 字典 in 操作符
  12. java 操作mdb文件_Java操作MDB文件
  13. 软件测试文档类型有哪些?
  14. bp神经网络误差反向传播,bp神经网络结果不一样
  15. html 科赫雪花,CSS3 科赫雪花分形动画
  16. 将视频截取成图片的C++代码
  17. php根据手机号码获取归属地,PHP通过API获取手机号码归属地
  18. SSD 输入图片尺寸、比例
  19. Automated Installations of Multiple RHEL/CentOS 7 Distributions using PXE Server and Kickstart Files
  20. HC-SR501 人体红外感应模块

热门文章

  1. iOS架构设计-URL缓存(上)
  2. springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux...
  3. flutter开发中常用的dart插件
  4. Message、Handler、Message Queue、Looper之间的关系
  5. 第十周项目5:贪心的富翁
  6. 04号团队-团队任务5:项目总结会
  7. 路印协议受邀参加澳洲新南威尔士政府孵化器Haymarket HQ分享论坛
  8. 根据PromiseA+规范实现Promise
  9. Netty 粘包 拆包 编码 解码 序列化 介绍
  10. 怎么让wordpress用sqlite3 搭建轻量级博客系统