Delphi中三种压缩库的应用比较.pdf
文本预览下载声明
第27卷第1期 贵州大学学报(自然科学版) V01.27No.1
ofGuizhou Feb.2010
2010年2月 Journal University(NaturalSciences)
文章编号1000—5269(2010)01—0095一04
Delphi中三种压缩库的应用比较
罗如为+,陈孝威
(贵州大学计算机科学与信息学院,贵阳550025)
自带的Zlib和最新的ZlibEx、ZlibExGZ这三种库的压缩能力及压缩、解压缩的时间消耗量。
关键词:Delphi;Zlib;压缩;压缩时间;解压缩
中图分类号:TP311.52文献标识码:A
zlib压缩算法是一种基于字典的无损压缩算部分分离成新的库文件ZlibExGZ,发展到2009.1,
法,采用了统计模型和字典模型,有机地结合了霍
夫曼(Huffman)树编码法和LZ77编码法的优点,
使压缩效果更好。Zlib算法继承了字典压缩算法
的思想,将此思想与滑动窗口(在内存中开辟的一
个固定长度的缓冲区)相结合,把滑动窗口看成是 缩包,将解压后的文件夹拷贝到delphi安装目录的
字符的字典,找出超前察看缓冲区(与滑动窗口的
缓冲区相邻)中能与滑动窗口的字符串相匹配的 tions中的librarypath中。在需要使用的时候use
最长的字符串,并将此串按照LZ77编码法进行编Mibex.ZlibExGZ.
码。当两个缓冲区中没有相匹配的字符时,便采用 1压缩和解压缩
自适应的Huffman编码法进行编码,在编码的过程
中将已编好的压缩码实时地写入压缩文件中。也
就是说,Zlib算法将长度不同的符号串编码成一个
个新单词,形成一本短语词典的索引,然后用索引
来检索数据,并用字典的编码代替符号串以达到压
缩目的。解码过程是编码的逆过程,同样用到了
缩,实现了很高的数据压缩比率。
Huffman算法和LZ77算法的编码算法,解码过程
以下为调用压缩库函数实现三种压缩和解压
与编码过程相似。
ZLIB压缩算法是对GZIP的一种改进,去掉了
中的压缩级别。以Csbz区分四种压缩级别:①不
压缩文件时包含的一些冗余信息,来提高对缓冲区
压缩;②快速压缩,牺牲压缩效率;③标准压缩;④
数据的压缩速度。ZLIB的核心算法和GZIP是相
同的,使用的是同一个压缩算法deflate。 最大化压缩,牺牲压缩速度。以CsType区别三种
从Delphi7光盘\Info、Extras\Zlib\Src可以找
后的文件流写入内存流mStream;解压后的文件流
到zlib(verl.0.4)是在1996.7发布的,在http://
w、^w.base2ti.eom/downloads/history/delphizlib.
缩级别,所以默认为标准压缩。实验中发现zlibEx
123.2009.shtm中可以看到,对旧的版本进行了优
1. 不能解压缩0字节的文件(夹);zlibExGZ既不能
化和修正后,在2000.6有了新的版本Zlib(ver
压缩也不能解压缩0字节的文件(夹);在解压缩
1.3),于2001.10更名为ZlibEx,经过不断地修正、
过程中,不能覆盖像Thumb.db这种隐藏系统文
修改和添加新的函数,并且在2007.3将gzip功能
收稿日期:2009—09—10
显示全部