【问题标题】:C/C++: Easily unzip to memoryC/C++:轻松解压到内存
【发布时间】:2011-06-02 08:59:26
【问题描述】:

我需要找到一个库,让我可以轻松获取 ZIP 存档中所有文件的目录列表,并允许我将存档中的任何给定文件提取到内存(缓冲区) .最好它应该是一个高级库,因为我的要求不是很复杂(我上面提到的几乎就是我所需要的)。

以前我尝试过具有我需要的行为的 PhysFS(轻松访问存档中的文件),但由于其他原因它不适合(有很多存档并且 PhysFS 需要我单独安装所有这些,这不是选项)。另一个有我需要的功能的库是Chilkat,但它是共享软件,所以我也不能使用它。

还有其他建议吗?

【问题讨论】:

  • C 或 C++ 是不同的语言。选择一个。
  • @Tomalak 我对两者都很满意。如果你坚持,我会选择 C++。 :)

标签: c++ c zip unzip


【解决方案1】:

虽然 .zip 使用 zlib http://zlib.net 压缩,但仅从 .zip 文件中获取目录列表是不够的。

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

edit 2 代码完全是 C(Zlib 也是)——该页面有两个 c++ 包装器库的链接,它们似乎都是死链接。

【讨论】:

  • 我在支持 minizip --- 这很棒。该 API 有点特殊,在编写 zipfile 时存在一些小错误,特别是当你想做一些奇怪的事情时,比如编写具有不同压缩设置的文件,但它比 libzip 更快、更小、更容易使用,而且更容易理解。
  • Minizip 似乎不错。我还发现了这个非常简单的 Minizip 包装器,它帮助我理解了应该如何使用它:http://code.google.com/p/microzip/...1d80da08c
【解决方案2】:

zlib 怎么样? http://zlib.net/“一个非常漂亮但又不显眼的压缩库(也是免费的,更不用说不受专利保护了)”

【讨论】:

  • zlib 不支持 .zip。它包含minizip,用于压缩/解压缩,但必须自己编写一个Unix包装器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 2017-02-02
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 2011-03-05
  • 2013-07-13
相关资源
最近更新 更多