Я использую стандартную библиотеку Java для записи файлов Zip Archive и в этом случае мне не нужно знать файлы, которые будут храниться в zip-файл заранее: я бы просто создал новый ZipEntry, а затем написал в поток ZipFile.Создание сжатого файла на C++ без знания начального размера файла
С другой стороны, LibArchive и ZLib для C++ должны заранее установить архивированную информацию о файле: в моем случае данные, которые я хочу сжать, поступают из внешнего потока, и, следовательно, я не могу запросить размер самого потока. Существует ли библиотека/способ использования этих библиотек, чтобы исходная информация о файлах не требовалась?
EDIT Кроме того, следующий код C++ с LibArchive создает действительный 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);
Вопросы, требующие рекомендаций, быстро отправляются на юг. Пожалуйста, обратитесь к разделу [help] (http://stackoverflow.com/help) о dos и don'ts here on SO. И упоминание JAVA и его libs не имеет никакого значения для вопроса, связанного с C++. –
Это типичная проблема этого сообщества packexchange ... – jackb
Не совсем. Мы все это пережили. Случилось также, когда я был новичком. Как только вы узнаете SO-пути, это легкий ветерок. –