zip 数据压缩

压缩与解压都是针对字节数组来进行的。

内存数据压缩

java.util.zip.DeflaterOutputStream
压缩步骤
1.创建一个ByteArrayOutputStream byteArrayOutputStream;
2.调用DeflaterOutputStream deflaterOutputStream=DeflaterOutputStream(byteArrayOutputStream)构造函数;
3.调用deflaterOutputStream.write(待压缩字节数组);
4.byteArrayOutputStream.toByteArray()得到压缩后字节数组。

内存数据解压

java.util.zip.InflaterOutputStream
解压缩步骤
1.创建一个ByteArrayOutputStream byteArrayOutputStream;
2.调用InflaterOutputStream inflaterOutputStream=InflaterOutputStream (byteArrayOutputStream)构造函数;
3.inflaterOutputStream.write(待解压缩字节数组);
4.byteArrayOutputStream.toByteArray()得到解压缩后字节数组。

代码

文件压缩(undone)

java.util.zip.ZipOutputStream
此类代表压缩数据的输出流。
java.util.zip.ZipOutputStream.ZipOutputStream(OutputStream out)
构造函数,与OutputStream绑定。
java.util.zip.ZipEntry.ZipEntry(String name)
通过指定的名字创建新ZipEntry。
void java.util.zip.ZipOutputStream.putNextEntry(ZipEntry e) throws IOException
开始写入一个新的zipEntry,并界定了一个文件内容的起点。
void java.util.zip.ZipOutputStream.closeEntry()
关闭当前的zipEntry,并界定了写入下一个zipEntry的起点。

文件解压(undone)

java.util.zip.ZipInputStream
此类代表压缩数据的输入流。
ZipEntry java.util.zip.ZipInputStream.getNextEntry()
读下一个zipEntry,并界定了一个文件内容的起点。
ZipInputStream类继承自InputStream,它没有重写read(byte[]) 方法,该方法见下行:
int java.io.FilterInputStream.read(byte[] b)
返回读取到的字节数。-1表示流中的内容读取完毕。这个函数内部会调用read(byte[] b, int off, int len)函数,ZipInputStream类重写了该函数:
int java.util.zip.ZipInputStream.read(byte[] b, int off, int len)
读取当前zipEntry的内容,输出到b数组。

时间: 2024-09-20 08:15:45

zip 数据压缩的相关文章

利用Java实现zip压缩/解压缩

压缩 利用Java实现zip压缩/解压缩(作者: 2000年07月06日 13:30) 由于网络带宽有限,所以数据文件的压缩有利于数据在Internet上的快速传输,同时也节 省服务器的外存空间. Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩.网络传输和解 压缩的实现比较容易,下面介绍利用ZipEntry.ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法. zip压缩文件结构:一个zip文件由多个entry组

利用Java实现zip压缩/解压缩_JSP编程

由于网络带宽有限,所以数据文件的压缩有利于数据在Internet上的快速传输,同时也节 省服务器的外存空间. Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩.网络传输和解 压缩的实现比较容易,下面介绍利用ZipEntry.ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法. zip压缩文件结构:一个zip文件由多个entry组成,每个entry有一个唯一的名称,entry的 数据项存储压缩数据. 与zip文件有关

【原创】zip 的压缩原理与实现

无损数据压缩是一件奇妙的事情,想一想,一串任意的数据能够根据一定的规则转换成只有原来 1/2 - 1/5 长度的数据,并且能够按照相应的规则还原到原来的样子,听起来真是很酷.半年前,苦熬过初学 vc 时那段艰难的学习曲线的我,对 MFC.SDK 开始失望和不满,这些虽然不算易学,但和 DHTML 没有实质上的区别,都是调用微软提供的各种各样的函数,不需要你自己去创建一个窗口,多线程编程时,也不需要你自己去分配 CPU 时间.我也做过驱动,同样,有DDK(微软驱动开发包),当然,也有 DDK 的"

C#编程总结(十三)数据压缩

在进行文件存储或者数据传输时,为了节省空间流量,需要对数据或文件进行压缩.在这里我们讲述 通过C#实现数据压缩. 一.GZipStream压缩 微软提供用于压缩和解压缩流的方法. 此类表示 GZip 数据格式,它使用无损压缩和解压缩文件的行业标准算法. 这种格式包括一个检测 数据损坏的循环冗余校验值. GZip 数据格式使用的算法与 DeflateStream 类的算法相同,但它可以扩 展以使用其他压缩格式. 这种格式可以通过不涉及专利使用权的方式轻松实现. 可以使用许多常见的压缩工具对写入到扩

java基础---->Zip压缩的使用(转)

java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用.   目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使用 GZIP与ZIP压缩的比较 友情链接   关于压缩的简要说明 一. Java中有着压缩的类: CheckedInputStream GetCheckSum()为任何InputStream 产生校验和(不仅是解压) CheckedOutputStream GetCheckSum()为任何Out

zip 的压缩原理与实现一

无损数据压缩是一件奇妙的事情,想一想,一串任意的数据能够根据一定的规则转换成只有原来 1/2 - 1/5 长度的数据,并且能够按照相应的规则还原到原来的样子,听起来真是很酷. 半年前,苦熬过初学 vc 时那段艰难的学习曲线的我,对 MFC.SDK 开始失望和不满,这些虽然不算易学,但和 DHTML 没有实质上的区别,都是调用微软提供的各种各样的函数,不需要你自己去创建一个窗口,多线程编程时,也不需要你自己去分配 CPU 时间.我也做过驱动,同样,有DDK(微软驱动开发包),当然,也有 DDK 的

MySQL · 实现分析 · HybridDB for MySQL 数据压缩

概述 数据压缩是一个把输入数据集按照一定的算法变换成更小的数据集的过程,解压是压缩的逆过程.如果算法对数据本身的语义了解得越多,则越可能利用语义信息进行针对性的处理,获得更好的压缩效果.数据库系统中用得比较多的压缩算法可以分为两大类:基于块的压缩.基于值的压缩.前者更为常见一些,在 OLTP 以及 OLAP 系统中都会用到,例如 InnoDB.TokuDB.HybridDB 中的块压缩:后者更多的用在 OLAP 的列存引擎内,例如 HybridDB for MySQL 中的列压缩.为了区别它们,

数据压缩很难?看看浪潮G2你就懂了

随着云计算和大数据的应用与发展, 各领域的信息量产生了爆炸式增长.企业不断购置大量的存储设备来应对快速增长的存储需求,然而更大.更多的存储容量会占用系统支出和能耗资源,因此数据压缩技术成为存储系统中的一项潮流技术.目前,数据压缩和重复数据删除是实现数据缩减的两种关键技术.而今天我们就来重点了解一下数据压缩. 数据压缩的前世今生 数据压缩,如WinRAR.ZIP等程序广为人知,是实现减少空间而把数据转换成比原始格式更紧凑形式的过程.数据压缩的概念相当古老,可追溯至19世纪中期的摩尔斯码.摩尔斯码发

java实现zip,gzip,7z,zlib格式的压缩打包_java

本文主要介绍的是通过使用java的相关类可以实现对文件或文件夹的压缩. zlib是一种数据压缩程序库,它的设计目标是处理单纯的数据(而不管数据的来源是什么). 7z 是一种新的压缩格式,它拥有目前最高的压缩比. gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件.gzip在压缩文件中的数据时使用的就是zlib.为了保存与文件属性有关的信息,gzip需要在压缩文件(*.gz)中保存更多的头信息内容,而zlib不用考虑这一点.但gzip只适用于单个文件,所以我