在 C++ 中创建一个 zip 存档

Posted

技术标签:

【中文标题】在 C++ 中创建一个 zip 存档【英文标题】:Create a zip archive in c++ 【发布时间】:2013-07-09 14:02:10 【问题描述】:

有没有办法创建一个包含完整文件夹内容或多个文件的 zip 存档。

我实际上在网上查看了该示例,但每次它都是仅基于缓冲区的文件压缩,例如:gzip_compressor() 或 gzwrite()

我无法在输入中提供完整路径,而只能提供文件缓冲区。 => 然后没有文件夹压缩也没有多文件压缩???

请注意,我想使用 zlib/gzip 或 boost(我可以链接的唯一库)

我想我错过了一些东西......

你能帮帮我吗? 马克。

【问题讨论】:

libgz 中的gzip 函数仅用于压缩。搜索可以处理 zip 档案的库。 您可以查找libzip。它是一个 C 库,但您可以从 C++ 调用它。 nih.at/libzip “从 C++ 调用它”是什么意思?它是一个外部库吗?你有文件吗?我在网站上找不到一些... 您可以从 C++ 应用程序调用 C 代码。网上有很多参考资料,比如这个:parashift.com/c++-faq/mixing-c-and-cpp.html至于lib​​zip本身就是一个外部库。阅读它的手册页,从这里开始:nih.at/libzip/libzip.html 点击其他函数的手册页。 你想要来自 unix 的任何命令来压缩文件夹或多文件吗? 【参考方案1】:

有几个库可以处理 zip 文件。他们使用 zlib 进行压缩、解压缩和 crc32 操作。你应该看看libzip 和DotNetZip。

【讨论】:

【参考方案2】:

看起来这会奏效。如果您在 Unix 环境中,您可能必须运行 Java 版本:

http://www.7-zip.org/sdk.html

【讨论】:

有没有办法只用 zlib/gzip 或 boost ? 我正在寻找一种方法,例如使用输入缓冲区向量进行压缩并输出单个存档

以上是关于在 C++ 中创建一个 zip 存档的主要内容,如果未能解决你的问题,请参考以下文章

在 jenkins 中创建存档工件的 zip

使用 System.IO.Compression 在内存中创建 ZIP 存档

如何在 Java 中创建未压缩的 Zip 存档

使用System.IO.Compression在内存中创建ZIP存档

在python中创建zip存档

从内存中的 url 下载图像并在内存中创建 zip 存档以发送到浏览器