Проблема с получением zip_utils для работы с файлами gzip

#c #zip #gzip #zlib

#c #zip #gzip #zlib

Вопрос:

Я использую zip_utils.

https://www.codeproject.com/Articles/7530/Zip-Utils-Clean-Elegant-Simple-Cplusplus-Win

Я заставил его работать с zip-файлами, но я не могу удалить какие-либо файлы .gz (gzip). Документация (см. Выше), похоже, указывает, что она должна работать. Вот код, который я использую:

 HZIP hz = OpenZip(sourcePath.c_str(), 0);
SetUnzipBaseDir(hz, dir.c_str());
ZIPENTRY ze; GetZipItem(hz, -1, amp;ze); int numitems = ze.index; // -1 gives overall information about the zipfile

for (int zi = 0; zi < numitems; zi  )
{
    ZIPENTRY ze; GetZipItem(hz, zi, amp;ze); // fetch individual details
    UnzipItem(hz, zi, ze.name);         // e.g. the item's name.
    //UnzipItem(hz, zi, destPath.c_str());         
}
CloseZip(hz);
  

Комментарии:

1. Что именно не работает? Есть код ошибки?

2. Коды ошибок не генерируются. Выходной файл пуст.

3. Вы проверяли? Все эти функции «zip» возвращают свой статус.

4. Только что провел тест на всех функциях zip. в zip-файле все функции возвращали ноль. Однако с файлом gz openzip вернул 131: «была предпринята попытка переместить указатель файла перед началом файла»

5. Я ничего не знаю об этой библиотеке, просто указывал, что вам всегда нужно проверять код возврата из любого API. Кроме того, эта библиотека не затрагивалась более 15 лет; нет ли более современных (и поддерживаемых) zip-библиотек? (Не отвечайте на это; это был риторический вопрос)

Ответ №1:

Я не вижу никаких указаний на то, что эта библиотека будет обрабатывать файлы gzip.

Комментарии:

1. на странице выше: «Этот код основан на gzip 1.1.4»

2. Я думаю, они имели в виду, что он основан на gzip, но, как вы говорите, это не означает, что он действительно может выкачать gzip. Я отмечаю ваш ответ как лучший. В исходном коде также говорится: «unzip.cpp «: «Библиотека также поддерживает чтение и запись файлов в формате gzip (.gz) // с интерфейсом, аналогичным интерфейсу stdio». но вы правы, там не сказано «эта библиотека», там написано «библиотека». моя ошибка

3. Он использует код из gzip только для сжатия ядра и распаковки данных deflate. Он не обрабатывает формат gzip.