项目报告
文件压缩与解压缩实践
随着人们对数据的大量需求以及计算机使用时间的增加,计算机磁盘上的文
件越来越大,越来越多。如何让有限的磁盘空间容纳更多的数据成为需要解决的
问题。一方面,高速发展的存储技术以提高磁盘容量来解决这样的需求,但随着
网络环境下数据传递的产生以及带宽的限制,大容量数据问题日益突出。在这两
种需求的推动下,对数据压缩的需求产生了。人们可以将文件在不改变其本身的
条件下,将其以更小的占用空间存储,并且在需要的时候将文件恢复成原有的样
子,这就是压缩目的。本论文主要研究文件的无损压缩技术,并简要介绍了文件
压缩的分类、几种常用的无损压缩格式和常用的压缩算法。运用 LZ77 字典算法、
懒惰匹配算法和 Huffman 编码算法,使用 Java 语言在 Jbuilder 环境下设计了使用
GZIP 算法对文件压缩与解压缩的实现程序。用户可以根据自己的需求,使用此
程序方便地对文件进行压缩或者解压缩操作。
压缩;解压缩;GZIP;Java
Practice of File Compression and Decompression
Abstract
As the great demand for data and the using time of computer are increasing,
computer files on the disk grow more and more. How to make the limited disk space
to store more data has became a problem crying out for solutions. On one hand, the
rapid development of storage technology that can increase the disk capacity, can meet
such demand. However, with the emergence of data transmission in a network
environment and the bandwidth limitations, the problem of large-capacity data is
increasingly prominent. With the promotion of both demands, the need for data
compression and decompression is generated. People can store a file with a smaller
storage space without changing the file’s own condition, and can restore the file; that
is the purpose of data compression and decompression. This treatise principally
research file lossless compression, otherwise, briefly introduced classification of file
compression, some general lossless compression format and general compression
algorithm. A procedure within algorithm called GZIP were designed for file
compression and decompression in Java language under the circumstances of
Jbuilder2006,which used LZ77 dictionary algorithm, lazy match algorithm and
Huffman coding algorithm. Users could use this procedure compress or decompress
files expediently according to their demand.
Key words: Compression; Decompression; GZIP; Java
目 录
论文总页数:21 页
1 引言............................................................................................................................................1
1.1 课题背景 ..........................................................................................................................1
1.2 国内外现有的研究成果 ..................................................................................................1
2 压缩与解压缩程序分析............................................................................................................2
2.1 需求分析 ..........................................................................................................................2
2.2 使用的算法理论 ..............................................................................................................2
2.2.1 LZ77 算法简介..........................................................................................................2
2.2.2 Huffman 算法简介 ....................................................................................................3
2.2.3 GZIP 算法原理分析..................................................................................................4
2.3 开发环境 ..........................................................................................................................4
3 总体设计....................................................................................................................................4
3.1 程序功能模块 ..................................................................................................................5
3.2 模块分析与流程图 ..........................................................................................................5
3.2.1 压缩模块....................................................................................................................5
3.2.2 解压缩模块................................................................................................................6
3.3 程序中各个类的初步定义 ..............................................................................................7
4 详细设计和实现........................................................................................................................8
4.1 压缩的程序流程 ..............................................................................................................8
4.2 解压缩的程序流程 ..........................................................................................................9
4.3 主函数代码 ....................................................................................................................10
4.3.1 gzip 压缩模块代码..................................................................................................10
4.3.2 ungzip 解压缩模块代码..........................................................................................11
4.4 程序界面设计 ................................................................................................................12
5 软件系统测试..........................................................................................................................17
5.1 运行环境 ........................................................................................................................17
5.2 测试方法 ........................................................................................................................17
5.3 测试结果 ........................................................................................................................17
5.3.1 使用程序对 txt 文件压缩 .......................................................................................17
5.3.2 使用程序对 bmp 图象文件压缩.............................................................................18
5.3.3 使用程序对 doc 文件压缩......................................................................................18
结 论..............................................................................................................................................18
参考文献..........................................................................................................................................19
致 谢..........................................................................................................................................20
声 明..........................................................................................................................................21
第 1 页 共 21 页
1 引言
1.1 课题背景
随着科学技术的进步,信息技术越来越广泛地应用到社会的各个行业和领域,
互联网深刻地改变着人们的生活方式,推动着人类文明的进步。伴随着信息技术
的普及和发展,互联网技术覆盖了社会政治、经济、文化、生产的各个领域,这
种普及日常生活和工作更加的方便、文化娱乐方式更加的多样化。但是,在信息
技术的飞速发展下,文件的信息量不断增加的背景下,文件的存储和拷贝要求能
够保持数据的意思不变的情况下缩小容量,这就需要有压缩与解压缩来实现这个
过程。本论文通过对一种压缩与解压缩方法的实践,对这种算法的实现过程进行
研究。
1.2 国内外现有的研究成果
文件压缩格式现在已有许多种,最流行的有如下几种:
ZIP:我们可以利用 WinZip 对 ZIP 文件进行解压、释放等操作,还可以用它
来处理 ARJ、ARC、CAB、LZH 等多种不同格式的压缩文件,从而大大地方便了用
户的操作。
RAR:是一种高效快速的文件压缩格式,但不被大多数文件压缩程序支持,
WinRAR 是在 Windows 下处理 RAR 格式文件的最好工具。
ARJ:由 DOS 下曾经红极一时的压缩软件 ARJ 压缩而成的文件格式,它具有
功能强大、压缩率高等优点。到了现在的 Windows 时代,它已经没有了往日的辉
煌。
CAB:是 Windows 98 新增的一种特殊压缩文件格式,主要用于对有关软件安
装盘中的文件进行压缩,其特点是压缩率非常高(可能是目前最高的),但一经压
缩就不能再进行任何增加、删除、替换等修改,也就是说它的压缩包具有“只读”
属性。我们也可使用 WinZip 对 CAB 压缩包进行操作。
UU/UUE:汉字编码方式,它们原本是 Unix 系统中使用的一种编码方式,后
来被改写到 DOS 中,我们在传送中文邮件时只须事先使用该方式进行编码,此后
就能顺利通过只能处理 7 位编码的邮件服务器,从而解决了汉字的传输问题。
ACE:一种新式的压缩程序,压缩比很高。
以上的压缩格式是可逆的,在解压缩之后,可以将被压缩的文件还原成以前
未压缩的文件。另外还有一种不可逆的压缩格式,如 MP3、MPEG、JPG 等音频、
视频、图像格式的文件都采用了这种压缩技术,从理论上来说它们也应该算压缩
文件,不过它们所采用的压缩方式与前面讲的并不相同,这里简单地介绍一下:
JPEG:JPEG 全名为 Joint Photographic Experts Group,它是一个在国际