boost :: iostream zlib将多个文件压缩到一个存档中

cpp*_*nda 8 c++ compression serialization boost zlib

我在将一堆文件打包到一个档案中时遇到了麻烦.这个主题的提升文档是非常有限的,我现在在网上搜索了几个小时,但我找不到解决方案.

到目前为止我有什么:

boost::filesystem::ofstream ofsArchive("some.zip");
boost::iostreams::filtering_ostreambuf outFilter;
boost::iostreams::zlib_params zparam(boost::iostreams::zlib::default_compression);

try
{
    // set up the filter
    outFilter.strict_sync();
    outFilter.push(boost::iostreams::zlib_compressor(zparam));
    outFilter.push(ofsArchive);


    for(each object of some kind)
    {
        // create a binary serialized file
        boost::filesystem::ofstream ofs(filename, std::ios_base::binary); 
        boost::archive::binary_oarchive bin_oa( ofs ); 
        bin_oa << crazyObject;

        // here's where i'm stuck. how to add multiple files to the "some.zip"?
        boost::iostreams::copy(ofs, outputArchive);
    }
}
catch(boost::iostreams::zlib_error& e){...}
Run Code Online (Sandbox Code Playgroud)

如何将文件添加到zip存档?提供的方法显然不起作用,我只是在文档或头文件中找不到任何关于主题的内容

Joh*_*mew 5

zlib不实现Zip文件格式,它仅实现Zip中使用的流压缩(请参阅zlib FAQ)。据我所知(我绝对不应该警告您),Boost不包含读写Zip存档的功能。当然,有一些库确实提供了该功能,例如zziplib(注意:此站点现在似乎已关闭)。

编辑:显然,zziplib实际上无法编写Zip文件,它只能读取它们。不过,我敢肯定,只要稍加搜寻就能找到能够编写格式的库。