2011-02-10 228 views
8

我在將一堆文件打包到一個存檔時遇到問題。助推文檔是非常有限的這個話題,我已經搜索了幾個小時的網絡,但我找不到解決方案。boost :: iostream 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){...} 

如何將文件添加到壓縮存檔?提供的方法顯然不起作用,我只是在文檔或頭文件中找不到任何關於此主題的內容

回答

4

zlib沒有實現Zip文件格式,它只是實現Zip中使用的流壓縮(請參閱the zlib FAQ )。據我所知(我應該警告你並不​​總是),Boost不包括讀取或寫入Zip存檔的功能。當然,有些庫的確提供了這種功能,例如,zziplib(注意:該網站此刻似乎處於關閉狀態)。

編輯:顯然,zziplib其實不能寫的Zip文件,它只能讀取它們。儘管如此,我相信一點點搜索會發現一個能夠編寫格式的圖書館。

0

我知道這個帖子有點老了,但對於像我這樣的人看到它多年後。

還有一堆的自由librairies寫在C(當然,在C++中使用)讀取壓縮文件:
- infoZip(最新版本似乎是真正的完整和安全,雖然它的歷史可以追溯到2008年);
- libzip,更近,最後一個版本只有兩個月大。

相關問題