2017-01-03 12 views
-1

Мне нужно было извлечь файл .zip программно, и мне было интересно, есть ли API, который Win32 должен извлечь эти типы файлов. Я видел, что есть Compress/Decompress, но я заметил, что это для сжатия необработанных байтов вместо фактического извлечения его в папку на рабочем столе.C++ - Win32 API для извлечения .zip

ответ

1

Нет никакого собственного API Win32 для работы с .zip файлами (или любым другим типом архива). Вы должны использовать стороннюю библиотеку (доступно множество открытых и коммерческих библиотек), или прочитайте спецификацию ZIP и напишите свою собственную логику с нуля.

+1

Несмотря на то, что документация не была специально задокументирована, вы можете использовать интерфейс [IShellFolder] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb775075.aspx) для перечисления (и извлечения) файлов из ZIP-архив. Однако поддержка ограничена (например, без шифрования). – IInspectable

+0

@Инспективный да, но только потому, что он является частью функциональности Explorer для обработки zip-файлов как виртуальных папок в пользовательском интерфейсе. Это деталь реализации, а не опубликованный API, предназначенный для общественного использования. –

+0

Я должен буду не согласиться. Как и в случае с COM, вы не получаете много документации поверх интерфейса. Независимо от первопричины, если вы можете построить интерфейс IShellFolder из ZIP-архива, вы можете использовать его бесплатно. Если бы Microsoft никогда не предполагала, что это будет использоваться вне реализации * File Explorer *, наверняка они могли бы сохранить реализацию частной. Пока ваш код готов обрабатывать ошибки, использование реализации через документированный интерфейс не связано с недокументированными деталями реализации. – IInspectable

 Смежные вопросы

  • Нет связанных вопросов^_^