java zlib gzip,zlib,gzip和zip有何关系?它们有什么共同点,有何不同?

简写:

.zip是一种存档格式,通常使用Deflate压缩方法。的.gzgzip格式为单个文件,也使用deflate压缩方法。通常的gzip在结合使用焦油进行压缩存档格式,.tar.gz。的zlib库提供了通过拉链,gzip的,使用DEFLATE压缩和解压缩代码PNG(它使用的zlib包装上放气的数据),和许多其它应用。

长表:

该ZIP格式是由菲尔·卡茨开发与开放的规范,他的执行,PKZIP,是共享的开放格式。它是一种存档格式,用于存储文件及其目录结构,其中每个文件都单独压缩。文件类型为.zip。可以选择加密文件以及目录结构。

ZIP格式支持几种压缩方法:

0 - The file is stored (no compression)

1 - The file is Shrunk

2 - The file is Reduced with compression factor 1

3 - The file is Reduced with compression factor 2

4 - The file is Reduced with compression factor 3

5 - The file is Reduced with compression factor 4

6 - The file is Imploded

7 - Reserved for Tokenizing compression algorithm

8 - The file is Deflated

9 - Enhanced Deflating using Deflate64(tm)

10 - PKWARE Data Compression Library Imploding (old IBM TERSE)

11 - Reserved by PKWARE

12 - File is compressed using BZIP2 algorithm

13 - Reserved by PKWARE

14 - LZMA (EFS)

15 - Reserved by PKWARE

16 - Reserved by PKWARE

17 - Reserved by PKWARE

18 - File is compressed using IBM TERSE (new)

19 - IBM LZ77 z Architecture (PFS)

97 - WavPack compressed data

98 - PPMd version I, Rev 1

方法1至7是历史性的,尚未使用。方法9到98是相对较新的新增方法,使用量很少。在ZIP格式中真正广泛使用的唯一方法是方法8,Deflate和在较小程度上是方法0,这根本没有压缩。实际上.zip,您在野外遇到的每个文件都将仅使用方法8和0,可能仅使用方法8。(方法8还具有一种有效地存储数据而无需压缩且扩展相对较少的方法,并且方法0无法流式传输而方法8可以是。)

用于文件容器的ISO / IEC 21320-1:2015标准是受限制的zip格式,例如用于Java存档文件(.jar),Office Open XML文件(Microsoft Office .docx,.xlsx,.pptx)格式化文件(.odt,.ods,.odp)和EPUB文件(.epub)。该标准将压缩方法限制为0和8,以及其他限制,例如没有加密或签名。

在1990年左右,Info-ZIP组编写了可移植的,免费的,开源的实用程序zip和unzip实用程序,支持使用Deflate格式进行压缩以及对该格式和早期格式进行解压缩。这极大地扩展了.zip格式的使用。

在90年代初期,gzip格式被开发为Unix compress实用程序的替代,它是从Info-ZIP实用程序中的Deflate代码衍生而来的。Unix compress旨在压缩单个文件或流,.Z并在文件名后附加a 。 compress使用LZW压缩算法,该算法当时处于专利保护之下,其免费使用受到专利持有人的争议。尽管Deflate的某些特定实现已由Phil Katz申请了专利,但该格式没有,因此可以编写不侵犯任何专利的Deflate实现。在过去的20多年中,该实现方式并未受到如此挑战。Unix gzip实用程序旨在代替compress,并且实际上可以解压缩压缩compress后的数据(假设您能够解析该句子)。 在文件名后gzip附加一个.gz。 gzip使用Deflate压缩数据格式,其压缩比Unix好很多compress,具有非常快的解压缩,并添加了CRC-32作为数据完整性检查。标头格式还允许存储比compress允许的格式更多的信息,例如原始文件名和文件修改时间。

尽管compress仅压缩单个文件,但通常使用该tar实用程序将文件,它们的属性及其目录结构的存档创建为单个.tar文件,然后将其压缩compress以创建.tar.Z文件。实际上,该tar实用程序具有并且仍然可以选择同时进行压缩,而不必将输出tar传递给compress。所有这些都转为gzip格式,并且tar可以选择直接压缩为该.tar.gz格式。该tar.gz格式压缩比更好.zip的方法,因为的压缩.tar可以利用冗余的跨文件,尤其是许多小文件。 .tar.gz由于其非常高的可移植性,它是Unix上最常用的存档格式,但同时也使用了更有效的压缩方法,因此您经常会看到.tar.bz2和.tar.xz存档。

与不同的是.tar,.zip末尾有一个中央目录,该目录提供了内容列表。该压缩和单独的压缩提供对.zip文件中各个条目的随机访问。一个.tar文件必须被解压缩,为了建立一个目录,这是一个如何从开始到结束扫描的.tar文件中列出。

在引入gzip之后不久,即1990年代中期,同一宗专利纠纷引发了人们对免费使用.gif图片格式的质疑,该图片格式在公告板上和万维网上使用非常广泛(当时是新事物)。因此,一个小组创建了PNG无损压缩图像格式(文件类型为.png)来替换.gif。该格式还使用Deflate格式进行压缩,该格式是在图像数据的过滤器公开更多冗余之后应用的。为了促进PNG格式的广泛使用,创建了两个免费代码库。 libpng和zlib。libpng处理了PNG格式的所有功能,而zlib提供了压缩和解压缩代码,供libpng和其他应用程序使用。zlib是从gzip代码改编而成的。

此后所有提及的专利均已过期。

zlib库支持Deflate压缩和解压缩,以及围绕deflate流的三种包装。它们是:完全不包装(“原始”放气),用于PNG格式数据块的zlib包装和gzip包装,为程序员提供gzip例程。zlib包装和gzip包装之间的主要区别在于zlib包装更加紧凑,只有6个字节,而gzip的包装最少为18个字节,而完整性检查Adler-32的运行速度比gzip使用的CRC-32要快。原始deflate由读取和写入该.zip格式的程序使用,该格式是另一种围绕deflate压缩数据的格式。

zlib现在广泛用于数据传输和存储。例如,大多数服务器和浏览器的HTTP事务使用zlib压缩和解压缩数据。

放气的不同实现方式可能导致相同输入数据的压缩输出不同,这由可选压缩级别的存在证明,这些压缩级别允许在CPU时间上权衡压缩效率。zlib和PKZIP并不是deflate压缩和解压缩的唯一实现。无论是7-ZIP归档工具和谷歌的zopfli库必须使用deflate格式时,为了挤掉可能最后几位用更多的CPU时间比zlib的能力,百分之几减少压缩尺寸相比zlib的最高压缩级别。该pigz工具,gzip的并行实现,包括使用zlib(压缩级别1-9)或zopfli(压缩级别11)的选项,并且通过在多个处理器和内核上拆分大文件的压缩,在某种程度上减轻了使用zopfli的时间影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值