私は、ジップアーカイブファイルを書き込むためにJavaの標準ライブラリを使用していました。この場合、格納するファイルを知る必要はありませんあらかじめzipファイルを作成しておくと、新しいZipEntryを作成してZipFileストリームに書き込むだけです。初期ファイルサイズを知らずにC++で圧縮ファイルを作成する
一方、C++用のLibArchiveとZLibは、あらかじめアーカイブするファイル情報を設定する必要があります。私の場合、圧縮したいデータはexternストリームから来ているため、サイズを問い合わせることができませんストリーム自体のこれらのライブラリを使用するライブラリ/方法はありますか?最初のファイル情報は不要ですか?
EDITまた、LibArchiveの次のC++コードでは、データのないファイルを含む有効なZIPファイルが生成されます。
a = archive_write_new();
archive_write_add_filter_gzip(a);
archive_write_set_format_pax_restricted(a);
archive_write_open_filename(a, path.c_str());
entry = archive_entry_new(); // Note 2
archive_entry_set_pathname(entry, entryName.c_str());
archive_entry_set_perm(entry, 0666);
archive_write_header(a, entry);
size_t s = archive_write_data(a, buff, len);
archive_entry_free(entry);
archive_write_close(a);
archive_write_free(a);
おすすめのおすすめはすぐに南に行きます。 DOSに関する[help](http://stackoverflow.com/help)セクションを参照してください。そして、JAVAとそのlibsの言及は、C++関連の質問には意味がありません。 –
これは、この非常にstackexchangeコミュニティの典型的な問題です... – jackb
実際にはありません。私たちはすべてそれを通過しました。私が初心者のときにも私に起こった。あなたがSOの方法を学ぶと、それは簡単です。 –