Java用Zip进行压缩
这个总结源于Java编程思想第四版18.11节的案例:
完整代码地址:
相关Api地址:
进行压缩时:
1.创建CheckedOutputStream流,需要传入一个OutputStream流,及检验和对象
2.CheckedOutputStream流做参数创建ZipOutputStream流
3.以ZipOutputStream流做参数创建BufferedOutputStream流,作为真正的输出流
4.得到你需要压缩的文件的输入流
5.根据文件名创建ZipEntry对象(可以为任意字符串,这个被称为Zip条目)
6.调用ZipOutputStream流的putNextEntry()方法,传入上一步创建的ZipEntry。告知流,这个条目要开始写入东西了
7.调用ZipOutputStream流的write()方法,将需要压缩的流写入其中
8.写完一个条目后,调用流的flush()方法
9.关闭流
核心就是:每次向里写入一个新文件时,需要将相关信息包装成ZipEntry,然后需要通过putNextEntry()告知ZipOutputStream流
String[] files = new String[]{...};
CheckOutputStream csum = new CheckOutputStream(new FileOutputStream("test.zip"),new Adler32);
ZipOutputStream zos = new ZipOutputStream(csum);
BufferedOutputStream out = new BufferedOutputStream(zos);
for(String file : files) {
BufferedInputStream filein = new BufferedInputStream(new FileInputStream(file));
ZipEntry entry = new ZipEntry(file); //可以对ZipEntry设置很多参数
zos.putNextEntry(entry);
int c;
)
out.write(c);
in.close();
out.flush();
}
out.close();
进行解压缩时:
1.创建CheckedInputStream流,需要传入一个InputStream流,及检验和对象
2.CheckedInputStream流做参数创建ZipInputStream流
3.以ZipInputStream流做参数创建BufferedInputStream流,作为真正的输入流
4.通过getNextEntry()告知ZipInputStream流,准备好下一个条目的数据,我需要取出来了
5.从真正输入流中取得数据
CheckInputStream csum = new CheckInputStream(new FileInputStream("test.zip"),new Adler32);
ZipInputStream zis = new ZipInputStream(csum);
BufferedInputStream in = new BufferedInputStream(zos);
while(zis.getNextEntry != null){
int x;
)
System.out.println(x);
}
查看压缩文件信息具体信息时:
1.创建ZipFile对象,传入压缩文件的地址
2.调用getEntries()得到所有的条目
3.遍历条目,输出条目的具体信息
ZipFile zf = new ZipFile("text.zip");
Enumration e = zf.entries();
while(e.hasMoreElements()){
ZipEntry ze = (ZipEntry)e.nextElement();
System.out.prinln(ze);
}
}
6.关闭流
Java用Zip进行压缩的更多相关文章
- Java对zip格式压缩和解压缩
Java对zip格式压缩和解压缩 通过使用java的相关类可以实现对文件或文件夹的压缩,以及对压缩文件的解压. 1.1 ZIP和GZIP的区别 gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格 ...
- [Java 基础] 使用java.util.zip包压缩和解压缩文件
reference : http://www.open-open.com/lib/view/open1381641653833.html Java API中的import java.util.zip ...
- java.util.zip.Deflater 压缩 inflater解压 实例
原文:java压缩解压缩类实例[转] package com.example.helloworld; import java.io.ByteArrayOutputStream; import java ...
- Java用ZIP格式压缩和解压缩文件
转载:java jdk实例宝典 感觉讲的非常好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,须要导入该包. 使用zipoutput ...
- 利用Java进行zip文件压缩与解压缩
摘自: https://www.cnblogs.com/alphajuns/p/12442315.html 工具类: package com.alphajuns.util; import java.i ...
- java.util.zip.ZipOutputStream压缩无乱码(原创)
package io; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.FileI ...
- Java /C# 实现文件压缩
纯粹为了记录. 参考了 https://www.cnblogs.com/zeng1994/p/7862288.html import java.util.List; import java.util. ...
- 用java实现zip压缩
本来是写到spaces live上的,可是代码的显示效果确实不怎么好看.在javaeye上试了试代码显示的顺眼多了. 今天写了个用java压缩的功能,可以实现对文件和目录的压缩. 由于java.uti ...
- Java实现zip压缩多个文件下载
为了更好的演示,首先创建一个文件实体FileBean,包含了文件路径和文件名称: package com.javaweb.entity; import java.io.Serializable; /* ...
随机推荐
- GIS基础软件及操作(六)
原文 GIS基础软件及操作(六) 练习六.空间分析的应用 1.加深对缓冲区分析基本原理.方法的认识:2.熟练掌握距离制图创建缓冲区技术方法.3.掌握利用缓冲区分析方法解决地学空间分析问题的能力. 1. ...
- Flot Reference flot参考文档
Consider a call to the plot function:下面是对绘图函数plot的调用: var plot = $.plot(placeholder, data, options) ...
- 修改Maven的本地仓库地址
已经配置好的设定文件: 1.创建一个本地仓库的地址 2.修改Maven中conf目录下的settings.xml文件 在此处添加修改后的本地仓库的地址 3.打开cmd 输入mvn help:sys ...
- KmdKit4D 0.01正式版发布了(0.02版已放出)(Delphi做驱动)
此版本较0.01预览版已经有了脱胎换骨的变化,主要表现在以下几个方面: 1.对程序的结构进行了调整,将原来的ntutils.dcu分成fcall.dcu.halfcall.dcu和macros. ...
- Dependency Injection 筆記 (4)
续上集未完的相关设计模式... (本文摘自電子書:<.NET 依賴注入> Composite 模式 延续先前的电器比喻.现在,如果希望 UPS 不只接计算机,还要接电风扇.除湿机,可是 U ...
- CTO的职责,以及Goolge内部流程
我先做一下自我介绍,我是 2007 年加入的 Google,在 Moutain View 总部任 Google SRE,今年年初回国加入 Coding. 在 Google 我参与了两个 Project ...
- android核心系列--2,关于任务栈(task)
一,任务 任务是由界面组件组成的一个栈,这些界面组件可以来自多个进程,多个应用,为共同完成一项任务而存在,比如写邮件时会用到邮件应用和联系人应用中的界面组件,这些界面组件在同一个任务中运行. 二,界面 ...
- Python连载8-datetime包函数介绍
一.datetime包(上接连载7内容) 1.函数:datetime (1)用法:输入一个日期,来返回一个datetime类 (2)格式:datetime.datetime(年,月,日,hour=, ...
- C#最新功能(6.0、7.0)
一直用C#开发程序,.NET的功能越来越多,变化也挺大的,从最初的封闭,到现在的开源,功能不断的增加,一直在进步.作为C#的强烈支持者,C#的变化,我不能不关注,这篇文章主要介绍,C#6.0和C#7. ...
- kali 源文件 更改和使用 更新日期:2018.04.21
我的公众号,正在建设中,欢迎关注: 0x01 源文件格式: kali下常用的更新命令有: apt-get install update和apt-get install upgrade,update是下 ...