Zip提供的功能大致相当于tar与gzip的组合.
tar只是将多个文件一起收集到一个文件中,保留有关原始文件的信息(例如,路径,日期).与问题中的陈述相反,它本身没有压缩.gzip只需要一个文件并压缩它.
Zip完成这两者 - 即,它将许多组成文件存储到存档中(同样,保留路径,日期等内容)并压缩它们.与tar + gzip不同,它单独压缩每个文件,并保留未压缩的组成文件的"目录"信息.这样可以轻松处理存档中的单个文件(插入,删除,解压缩等),但也意味着它通常不会获得整体压缩效果.
而不是重新实现zip的压缩算法,你几乎肯定最好从zlib网站下载代码(非常便携,非常自由的许可证).zlib网站确实对算法有一个相当合理的解释.如果你真的坚持自己这样做,你可能也想看看RFC 1950,1951和1952.
在这种情况下,“zip”是一种允许多种不同压缩方法的文件格式。它们包括 deflate、deflate64、bzip2、lzma、wavpack 和 ppmd。然而,在实践中,为了兼容性,您几乎总是会看到 deflate 专门用于 zip 文件。
deflate 也是 gzip 和 zlib 以及 png 图像格式中使用的压缩方法。
deflate 是 LZ77 压缩器,而不是 LZ78。
tar 是一个归档器,而不是一个压缩器。它生成 .tar 文件格式。.tar 文件通常被压缩(方便地由 tar 程序本身调用外部程序),它会添加一个后缀,例如 .tar.gz 用于 gzip 压缩。tar 选项包括用于 gzip 的 -z、用于 bzip2 (.bz2) 的 -j 和用于 lzma (.xz) 的 -J。
您不需要为 deflate 实现算法。已经为你完成了。您可以在代码中使用zlib,它具有非常宽松的许可证。
| 归档时间: | 
 | 
| 查看次数: | 9702 次 | 
| 最近记录: |