我正在使用C ++,Boost和Qt开发一个项目。我理解如何使用例如Qt中的qCompress()函数压缩单个文件和字节流。
如何压缩多个文件的目录,包括子目录?我正在寻找一个跨平台(Mac,Win,Linux)解决方案;我宁愿不发动一堆新流程。
是否有标准方法将来自多个文件的字节流组合成压缩档案,或者Boost iostream库中是否有可用的便利功能或方法?
非常感谢你的帮助。
更新:QuaZip库看起来非常棒。下载包中的一个示例(在“tests”目录中)非常清楚地显示了如何压缩文件目录。
更新2 :在我的Linux构建环境中完成此任务后,我发现QuaZip根本不适用于Visual Studio编译器。可能有可能解决所有这些编译器错误,但对任何看不起这条道路的人都要小心。
答案 0 :(得分:9)
我找到了以下两个库:
啊,当然,我已经从this Qt邮件列表问题中删除了那些关于压缩/解压缩目录的网站:)
答案 1 :(得分:1)
答案 2 :(得分:1)
仅供记录......
今天,我需要在Visual C ++中做一些非常相似的事情。 (虽然希望保留在其他平台上编译项目的可能性;但是为了这个目的,最好不要采用Qt。)
使用Minizip库结束。它是用简单的C语言编写的,但设计一个简单的C ++包装器是件轻而易举的事情,最终的结果非常好,至少对我来说是这样。
答案 3 :(得分:0)
我在Windows上使用VisualStudio 2010尝试过QuaZIP 0.4.3 - 仍有问题,但可以轻松解决。
答案 4 :(得分:0)
我已经在minizip周围构建了一个包装器,添加了我需要的一些功能并使其更好用。是否使用最新的c ++ 11并使用Visual Studio 2013开发,因此它应该为您开箱即用。
这里有完整的说明:https://github.com/sebastiandev/zipper
你可以压缩整个文件夹,流,矢量等。另外一个很好的功能就是完全在内存中完成所有工作。
答案 5 :(得分:0)
Poco::Zip
也是一种选择,它具有清晰的文档和一些演示代码。
答案 6 :(得分:-1)
system("zip myarchive.zip *");