当前位置:文档之家› 文件压缩与解压缩实践论文

文件压缩与解压缩实践论文

文件压缩与解压缩实践摘要随着人们对数据的大量需求以及计算机使用时间的增加,计算机磁盘上的文件越来越大,越来越多。

如何让有限的磁盘空间容纳更多的数据成为需要解决的问题。

一方面,高速发展的存储技术以提高磁盘容量来解决这样的需求,但随着网络环境下数据传递的产生以及带宽的限制,大容量数据问题日益突出。

在这两种需求的推动下,对数据压缩的需求产生了。

人们可以将文件在不改变其本身的条件下,将其以更小的占用空间存储,并且在需要的时候将文件恢复成原有的样子,这就是压缩目的。

本论文主要研究文件的无损压缩技术,并简要介绍了文件压缩的分类、几种常用的无损压缩格式和常用的压缩算法。

运用LZ77字典算法、懒惰匹配算法和Huffman编码算法,使用Java语言在Jbuilder2006环境下设计了使用GZIP算法对文件压缩与解压缩的实现程序。

用户可以根据自己的需求,使用此程序方便地对文件进行压缩或者解压缩操作。

关键词:压缩;解压缩;GZIP;JavaPractice of File Compression and DecompressionAbstractAs 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)结论 (19)参考文献 (19)致谢 (20)声明 (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,它是一个在国际标准组织(ISO)下从事静态影像压缩标准制定的委员会。

它制定出了第一套国标静态影像压缩标准:ISO 10918-1 就是我们俗称的JPEG了。

由于JPEG优良的品质,使得它在短短的几年内就获得极大的成功,目前网站上80%的影像都是采用JPEG的压缩标准。

JPEG 2000:正式名称为“ISO 15444”,同样是由JPEG组织负责制定。

JPEG 2000与传统JPEG最大的不同,在于它放弃了JPEG所采用的以离散余弦转换为主的区块编码方式,而改以小波转换为主的多解析编码方式。

其压缩率比JPEG 高约30%左右,同时支持有损和无损压缩,无损压缩对保存一些重要图片十分有用。

MP3:MP3全称是MPEG 1 Layer 3,是一种高性能的声音压缩编码方案,它可以做出超小“体积”的音乐文件,大小只是原始音频数据的1/10到1/12。

但人耳听起来,效果却没有太大差异。

MPEG:MPEG是Moving Pictures Experts Group(动态图像专家组)的缩写。

现在使用的有4个版本:MPEG-1、MPEG-2、MPEG-3、MPEG-4。

2压缩与解压缩程序分析2.1需求分析文件的压缩与解压缩,要能方便地进行,要完成的功能包括压缩功能,解压缩功能,选择文件路径,选择操作方案,选择新文件保存路径。

此程序还要在压缩成功后显示被压缩文件的大小,并对非法操作给出提示。

用户可以选择文件进行压缩或解压缩操作,并选择生成保存路径,默认的保存路径为原文件目录,压缩的生成文件以原文件加.gzip后缀命名,在解压缩操作中,若输入文件不是gzip格式的压缩文件,则提示gzip文件格式不对。

程序的基本设计原则有:方便性原则、功能实用性原则和开放性原则等。

程序设计时采用较好的压缩技术,能保证文件压缩的压缩比和可恢复性,确保程序有较长的生命周期。

本程序的总体目标是实现文件压缩与解压缩的便捷操作,因此需要有便捷的操作界面。

2.2使用的算法理论2.2.1LZ77算法简介这一算法是由Jacob Ziv和Abraham Lempel于 1977 年提出,所以命名为LZ77。

这种算法模型也被称为“滑动字典”模型或“滑动窗口”模型。

压缩的模型如图1:图1 压缩中的LZ77算法模型图在最远匹配位置和当前处理位置之间是可以用来查找匹配的“字典”区域,随着压缩的进行,“字典”区域从待压缩文件的头部不断地向后滑动,直到达到文件的尾部,短语式压缩也就结束了。

解压缩的模型如图2:图2 解压缩中的LZ77算法模型图2.2.2Huffman算法简介David Albert Huffman(哈夫曼/赫夫曼/霍夫曼)在MIT攻读博士学位期间于1952年提出了一种从下到上的编码方法,现在被称为Huffman编码,它是一种统计最优的变码长符号编码,让最频繁出现的符号具有最短的编码。

相关主题