我正在使用C ++,Boost和Qt进行项目。我了解如何使用Qt中的qCompress()函数压缩单个文件和字节流。
如何压缩多个文件的目录,包括子目录?我正在寻找一种跨平台(Mac,Win,Linux)解决方案;我不希望取消一系列新流程。
是否存在将来自多个文件的字节流组合成压缩存档的标准方法,或者Boost iostream库中可能提供便利功能或方法?
非常感谢您的协助。
Update:QuaZip库看起来很棒。下载包中有一个示例(位于“ tests”目录中),非常清楚地显示了如何压缩文件目录。
Update 2:在我的Linux构建环境中完成此任务之后,我发现QuaZip在Visual Studio编译器中根本不起作用。可能有可能解决所有这些编译器错误,但请注意此路径的任何人注意。
仅供记录...
今天,我需要在Visual C ++中执行非常相似的操作。 (尽管希望保持在其他平台上编译项目的可能性;但是更倾向于不仅仅为此目的采用Qt。)
最终使用Minizip库。它是用普通的C语言编写的,但是围绕它设计一个简单的C ++包装是一件轻而易举的事,并且最终的效果很好,至少出于我的目的。
[我在装有Visual Studio 2010的Windows上尝试了QuaZIP 0.4.3,仍然存在问题,但可以轻松解决。]
我围绕minizip构建了一个包装器,添加了一些我需要的功能,并使其更易于使用。它确实使用最新的c ++ 11,并且是使用Visual Studio 2013开发的,因此它应该为您开箱即用。
Poco::Zip
也是一种选择,它具有清晰的文档和一些演示代码。
system("zip myarchive.zip *");