【问题标题】:Zip on-the-fly compression library in C for streamingC 中用于流式传输的 Zip on-the-fly 压缩库
【发布时间】:2011-08-30 10:49:08
【问题描述】:

是否有一个库可以为非常大的文件(4 Gb 和以上)。

压缩比并不重要(主要是媒体文件)。

该库必须有一个 c 接口并且可以在 Debian 和 OSX 上运行。

【问题讨论】:

  • @karlphillip 很抱歉。需要 Debian 和 OSX 支持。

标签: c streaming compression zip on-the-fly


【解决方案1】:

libarchive 支持您想要的任何格式,动态甚至内存中的文件。

【讨论】:

  • 看起来很有希望。会检查的。
【解决方案2】:

zlib 支持分块压缩。您应该能够在压缩后立即开始发送一个小块,而库仍在压缩下一个块。 (见this example

(不幸的是,文件表存储在 zip 文件的末尾,因此文件在接收方完成之前将无法使用)

【讨论】:

  • 我的印象是 zlib 不能处理 zip 文件?见zlib.net/zlib_faq.html#faq11
  • 对于 zip 文件不正确,在末尾添加目录以简化随机访问,但文件条目本身是按顺序写入的。最后的目录只是为了方便。
  • @DanielW:同样的 FAQ 链接指向 contrib/minizip,它确实使用 zlib 创建 zip 文件,所以它显然可以。
  • @Hasturkun 没有。 Minizip 项目有一个 zlib 依赖项,可以读取 zip 文件。这并不意味着 Minizip 支持动态压缩,也不意味着 zlib 支持 zip 文件。如果答案是这样的:您可以使用 zlib 轻松地自己创建这个 zip 库,或者您可以检查 Minizip 是否支持动态压缩,我更倾向于将其标记为已接受。
  • 好吧,从技术上讲,将您指向图书馆然后告诉您自己检查并不是您问题的答案......这就是为什么我不会更正这个答案。
【解决方案3】:

虽然这个问题很老并且已经回答了,但我会为那些发现这个问题的人指出一个新的潜在解决方案。

我需要一个非常相似的东西,一个可移植且非常小的库,它可以用 C 以流式方式创建 ZIP 档案。找不到任何符合要求的东西,我创建了一个使用 zlib 的库,可在此处获得:

https://github.com/CTrabant/fdzipstream

该代码仅依赖于 zlib,本质上提供了一个简单的界面来创建 ZIP 存档。最重要的是(对我来说)输出可以流式传输到管道、套接字,因为输出流不需要是可搜索的。代码很小,一个源文件和一个头文件。适用于 OSX 和 Linux 以及可能的其他地方。希望它对我以外的人有所帮助...

【讨论】:

    猜你喜欢
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-10
    • 2023-03-06
    • 2018-02-21
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多