2011-02-10 27 views
8

複数のファイルを1つのアーカイブにまとめるのに問題があります。ブーストのドキュメントは非常にこのトピックでは限られており、私は数時間のWebを検索しましたが、私は解決策を見つけることができません。boost :: iostream zlib複数のファイルを1つのアーカイブに圧縮

何私がこれまで持っている:

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アーカイブにファイルを追加するには?提供されたメソッドは明らかに機能しません。私はドキュメントやヘッダーファイルの件名に何も見つかりません。

答えて

4

zlibはZipファイルフォーマットを実装していません。 )。 Boostには、私が知っている限り、あなたに警告するべきではありませんが、Zipアーカイブを読み書きする機能はありません。その機能を提供するライブラリはもちろん(注:現時点ではサイトがダウンしているように見えます)のです。

編集:明らかに、zziplib実際にはできません。は、Zipファイルを書き込むことはできません。それでも、私はちょっとグーグルがフォーマットを書くことができるライブラリを作り上げるだろうと確信している。

0

私はポストが少し古くなっていることを知っていますが、それは何年も後に私を見る人のためです。

(もちろんC++で使用可能)Cにzipファイルを読み書きするための空きlibrairiesの束があります。
- infoZip(それは2008年にさかのぼりますけれども、最後のバージョンは、本当に完全かつ安全であるように思われます)。
- libzip、最近のバージョンは2ヶ月しかありません。

関連する問題