在C中压缩即时压缩库以进行流式传输

时间:2011-08-30 10:49:09

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

是否有用于动态创建zip文件(zip file format非gzip或任何其他压缩格式)的库(因此我可以在压缩时开始发送文件)用于非常大的文件(4 Gb及以上)。

压缩比无关紧要(主要是媒体文件)。

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

3 个答案:

答案 0 :(得分:4)

libarchive支持您想要的任何格式,即时内存文件。

答案 1 :(得分:3)

zlib支持通过块进行压缩。你应该能够在压缩之后立即开始发送一个小块,而库仍在压缩下一个块。 (见this example

(遗憾的是,文件表存储在zip文件的末尾,因此文件将无法使用,直到接收方完成为止)

答案 2 :(得分:1)

虽然这个问题已经陈旧并已经得到解答,但我会为那些找到这个问题的人注意一个新的潜在解决方案。

我需要一些非常相似的东西,一个可移植且非常小的库,它以C语言的流式方式创建ZIP档案。没有找到任何符合我使用zlib创建的帐单,可在此处获取:

https://github.com/CTrabant/fdzipstream

该代码仅依赖于zlib,本质上提供了创建ZIP压缩文件的简单界面。最重要的是(对我来说)输出可以流式传输到管道,套接字,无论输出流不需要是什么。代码非常小,单个源文件和头文件。适用于OSX和Linux以及其他地方。希望它能帮助除了我以外的人...