2011-08-30 49 views
8

是否存在用于即时创建zip文件(zip file format而非gzip或任何其他压缩格式)的库(这样我就可以开始发送文件压缩)非常大的文件(4 Gb及以上)。C中的流媒体压缩库用于流式传输

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

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

+0

您希望使用哪种操作系统? – karlphillip

+0

@karlphillip对不起。 Debian和OSX支持是必要的。 –

回答

4

libarchive支持你的任何格式想要的,即时的,甚至是内存中的文件。

+0

看起来很有希望。将检查出来。 –

3

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

(不幸的是,文件表存储在压缩文件的末尾,因此该文件将无法使用,直到其完成在接收端)

+0

我的印象是zlib无法处理zip文件?请参阅http://www.zlib.net/zlib_faq.html#faq11 –

+1

不适用于zip文件,该目录在最后添加以简化随机访问,但文件条目本身是按顺序写入的。最后的目录只是为了方便。 –

+0

@DanielW:同样的FAQ链接指向'contrib/minizip',它使用zlib创建zip文件,所以它显然可以。 – Hasturkun

1

虽然这个问题已经很久了,并且已经得到解答,但我会注意到对于那些发现这种情况的人来说一个新的潜在解决方案。

我需要非常相似,创建ZIP压缩文件以流方式在C.没有找到任何东西,适合我创建一个使用zlib的法案便携式和非常小的图书馆的东西在这里,可供选择:

https://github.com/CTrabant/fdzipstream

该代码只依赖于zlib,基本上提供了一个简单的界面来创建ZIP档案。最重要的是(对我来说)可以将输出流式传输到管道,套接字,无论输出流是否需要查找。代码非常小,只有一个源文件和一个头文件。适用于OSX和Linux以及其他地方。希望它可以帮助超越我的人......