用于流式传输的 C 语言 Zip 即时压缩库

发布于 2024-12-02 05:30:26 字数 235 浏览 4 评论 0原文

是否有用于创建 zip 文件的库(zip 文件格式 不是 gzip 或任何对于非常大的文件(4 Gb 及以上),即时(这样我可以在压缩文件时开始发送文件)。

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

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

Is there a library for creating zip files (the zip file format not gzip or any other compression format) on-the-fly (so I can start sending the file while it is compressing) for very large files (4 Gb and above).

The compression ratio does not matter much (mostly media files).

The library has to have a c-interface and work on Debian and OSX.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

别理我 2024-12-09 05:30:26

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

libarchive supports any format you want, on the fly and even in-memory files.

素年丶 2024-12-09 05:30:26

zlib 支持按块压缩。您应该能够在压缩后立即开始发送一小块,而库仍在压缩下一个块。 (参见这个例子

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

zlib supports compressing by chunks. you should be able to start sending a small chunk right after compressing it, while the library is still compressing the next chunk. (see this example)

(unfortunately, the file table is stored at the end of the zip file, so the file will be unusable until it is complete on the receiver side)

扮仙女 2024-12-09 05:30:26

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

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

https://github.com/CTrabant/fdzipstream

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

While this question is old and already answered I will note a new potential solution for those that find this.

I needed something very similar, a portable and very small library that created ZIP archives in a streaming fashion in C. Not finding anything that fit the bill I created one that uses zlib, available here:

https://github.com/CTrabant/fdzipstream

That code only depends on zlib and essentially provides a simple interface to creating ZIP archives. Most importantly (for me) the output can be streamed to a pipe, socket, whatever as the output stream does not need to be seek-able. The code is very small, a single source file and a header file. Works on OSX and Linux and probably elsewhere. Hope it helps someone beyond just me...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文