我无法将一堆文件打包到一个存档中。这个主题的提升文档非常有限,我现在在网上搜索了几个小时,但我找不到解决方案。
到目前为止:
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){...}
如何将文件添加到zip存档?提供的方法显然不起作用,我只是在文档或头文件中找不到任何关于主题的内容
答案 0 :(得分:4)
zlib没有实现Zip文件格式,它只是实现Zip中使用的流压缩(参见the zlib FAQ)。据我所知(我应该警告你完全没有),Boost不包括读取或写入Zip档案的功能。有些库确实提供了这个功能,例如,zziplib(注意:此时该网站似乎已关闭)。
编辑:显然,zziplib实际上不能写Zip文件,它只能读取它们。不过,我确信有点谷歌搜索会出现一个能够编写格式的库。
答案 1 :(得分:0)