C/C++:轻松解压到内存

3
我需要找到一个库,可以轻松地获取ZIP存档中所有文件的目录列表,并允许我将存档中的任何给定文件提取到内存(缓冲区)。最好是高级库,因为我的要求并不是很复杂(上面提到的基本上就是我所需要的)。
以前我尝试过PhysFS,它具有我需要的行为(轻松访问存档中的文件),但由于其他原因(有许多存档,而PhysFS需要我单独挂载所有存档,这不是一个选项),所以它不适用。另一个有点类似于我需要的功能的库是Chilkat,但它是共享软件,所以我也不能使用它。
还有其他建议吗?

C或C++是不同的编程语言。选择一个。 - Lightness Races in Orbit
2
@Tomalak 我两种语言都很熟悉。如果你坚持的话,我会选择C++。 :) - Paul Manta
2个回答

3

尽管 .zip 使用 zlib http://zlib.net 压缩,但仅有它是不足以从 .zip 文件获取目录列表。

你还需要代码来读取 .zip 字典格式。看看 Minizip http://www.winimage.com/zLibDll/minizip.html。它提供了一个代码和简单的 zip/unzip 命令行可执行文件。

编辑 2 该代码完全采用 C(Zlib 也是如此)-- 该页面上有两个 C++ 包装库的链接,但似乎都是失效的链接。


我也推荐使用minizip --- 它非常棒。虽然API有点奇怪,在编写zip文件时可能会出现一些小错误,特别是当您想要使用不同的压缩设置编写文件时,但它比libzip更快、更小、更易于使用,而且更容易理解。 - David Given
1
Minizip似乎很不错。 我还发现了这个非常简单的Minizip包装器,它帮助我理解了如何使用它:http://code.google.com/p/microzip/...1d80da08c - Paul Manta

2

那么zlib呢?http://zlib.net/ 是一个“非常酷炫但又不显眼的压缩库(也是免费的,更不用说没有专利限制了)”。


zlib不支持.zip格式。它包含minizip,用于压缩/解压缩,但是需要自己编写Unix包装器。 - Benjamin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接