在 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至于libzip本身就是一个外部库。阅读它的手册页,从这里开始: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 存档的主要内容,如果未能解决你的问题,请参考以下文章
使用 System.IO.Compression 在内存中创建 ZIP 存档