使用Java API压缩和解压缩数据
虽然 WinZip、gzip和Java ARchive(或 jar)等工具可以用来压缩和解压缩数据,这些工具仍被用作独立 的应用程序。从 Java 应用程序中可以调用这些工具,但并非是简捷有效的解决 方法。在希望迅速地(如在传输到远程机器之前)压缩和解压缩数据的情况下, 尤其如此。本文将:
简要综述数据压缩 字串8
描述java.util.zip包
字串4
介绍如何使用这些包压缩和解压缩数据
介绍如何压缩和解压缩已序列化的对象以节省磁盘空间
字串3
介绍如何迅速压缩和解压缩数据,以提高客户/服务器应用程序的性能 字串9
概述数据压缩 字串8
文件冗余最单一的类型是字符的重复。例如,下列字符串: 字串5
BBBBHHDDXXXXKKKKWWZZZZ 字串6
可以更简洁地对本字符串进行编码,方法是以重复字符和代表其重复次数的数 字代替每个重复字符串。因此,上述字符串可以编码为: 字串7
4B2H2D4X4K2W4Z
这里的" 4B "表示4个B,而2H表示2个H,等等。以这种方法压缩字符串的编码 方式叫做运行长度编码。
字串6
另一个例子,是矩形图像存储。因为是单色位图图像,所以按图表1所示存储。
字串3

图表1∶带运行长度编码信息的位图 字串2
第二种方法是将图像存为图解元文件∶ 字串1
矩形11、3、20、5 字串3
它表示,该矩形起始坐标是(11, 3),宽度是 20 像素,长度是 5 像素。 字串2
矩形图像可以通过计算相等字节的方式,以运行长度编码进行压缩,如下: 字串4
0, 40 字串6
0, 40 字串1
0,10 1,20 0,10
0,10 1,1 0,18 1,1 0,10 字串6
0,10 1,1 0,18 1,1 0,10
字串1
0,10 1,1 0,18 1,1 0,10
0,10 1,20 0,10 字串7
0,40 字串2
上面的第一行表示,位图的第一行由40个0组成。第三行表示,位图的第三行 由10个0组成,继之以20个1、10个0组成,诸如此类。
注意,运行长度编码要求对其文件及其编码版本分别表示。所以,本方法不 适用于所有文件。其他的压缩技术包括变长编码(亦称霍夫曼编码)和等其它编 码。更多信息,请参看数据和影象压缩技术的相关书籍。 字串3
数据压缩的好处很多。不过,基本的好处是减少存储需求。此外,对于数据 通信,通过介质传递压缩数据会导致信息传输率的增加。注意,数据压缩可以 在现有的硬件上通过软件或采用结合了压缩技术的专门硬件设备完成。图形2显 示了基本的数据压缩方块图。 字串8

图形2∶数据压缩方块图
ZIP vs. GZIP
如果使用的是 Windows,就会很熟悉 WinZip 工具,该工具用来创建压缩文 件和从压缩文件中提取文件。不过,在UNIX上,细节有些有点不一样。tar 命令 用来创建文件(非压缩),而另一个程序(gzip或压缩)用来压缩 文件。 字串2
WinZip和PKZIP之类的工具既用作归档器,也用 作压缩器。它们将文件压缩并存储在文档中。另一方面,gzip并不 存档文件。因此,在 UNIX 上,tar命令通常用来创建文档,然后 用gzip命令来压缩存档文件。 字串9
java.util.zip 包
字串2
Java 为兼容 zip 的数据压缩提供 java.util.zip包。它提供 允许读取、创建并修改ZIP和GZIP文件格式的类。此外,提供用于计算任意输入流 校验和的应用类,该类可用于确认输入数据。这个包有一个界面、14个类和2个异 常类,如表1所示。
字串2
表 1∶java.util.zip 包
项目 类型 描述
Checksum 界面 由Adler32和CRC32类实现 字串5
Adler32 类 用于计算数据流的 Adler32 检验和 字串9
CheckedInputStream 类 维持正在读取的数据检验和的输入流。 字串4
CheckedOutputStream 类 维持写入数据的检验和的输出流。 字串7
CRC32 类 用于计算数据流的 CRC32 检验和
字串5
Deflater 类 支持使用 ZLIB 压缩库的常规压缩 字串8
DeflaterOutputStream 类 以紧缩压缩格式压缩数据的输出流过滤器 字串4
GZIPInputStream 类 文件格式压缩数据的输入流过滤器。 字串9
GZIPOutputStream 类 文件格式压缩数据的输出流过滤器。
字串4
Inflater 类 支持使用 ZLIB 压缩库的常规解压缩
字串8
InlfaterInputStream 类 解压紧缩压缩格式数据的输入流过滤器 字串3
ZipEntry 类 代表ZIP压缩文件条目
字串7
ZipFile 类 用于从ZIP文件中读取条目
ZipInputStream 类 读取ZIP文件格式文件的输入流过滤器 字串6
ZipOutputStream 类 以ZIP文件格式写入文件的输出流过滤器
DataFormatException 异常类 给出数据格式错误的信号
字串9
ZipException 异常类 给出 zip 错误的信号 字串2
注意: TZLIB压缩库最初是作为“可移植的网络图象文件格式”(PNG) 标准的一部分进行开发的,该标准不受专利的保护。
开班时间-武汉北大青鸟
企业人才预定热线
全国免费咨询电话
就业服务电话
教学质量监督
武汉北大青鸟地址
邮编
027-87807736
800-880-0456(电信用户)
027-87807717 李老师
027-87807727 吕老师
武汉洪山区鲁巷广场武汉数码港3楼(鲁巷广场隔壁)
430074 鄂ICP备06014222号

