Мне нужно было извлечь файл .zip программно, и мне было интересно, есть ли API, который Win32 должен извлечь эти типы файлов. Я видел, что есть Compress/Decompress, но я заметил, что это для сжатия необработанных байтов вместо фактического извлечения его в папку на рабочем столе.C++ - Win32 API для извлечения .zip
-1
A
ответ
1
Нет никакого собственного API Win32 для работы с .zip
файлами (или любым другим типом архива). Вы должны использовать стороннюю библиотеку (доступно множество открытых и коммерческих библиотек), или прочитайте спецификацию ZIP и напишите свою собственную логику с нуля.
Несмотря на то, что документация не была специально задокументирована, вы можете использовать интерфейс [IShellFolder] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb775075.aspx) для перечисления (и извлечения) файлов из ZIP-архив. Однако поддержка ограничена (например, без шифрования). – IInspectable
@Инспективный да, но только потому, что он является частью функциональности Explorer для обработки zip-файлов как виртуальных папок в пользовательском интерфейсе. Это деталь реализации, а не опубликованный API, предназначенный для общественного использования. –
Я должен буду не согласиться. Как и в случае с COM, вы не получаете много документации поверх интерфейса. Независимо от первопричины, если вы можете построить интерфейс IShellFolder из ZIP-архива, вы можете использовать его бесплатно. Если бы Microsoft никогда не предполагала, что это будет использоваться вне реализации * File Explorer *, наверняка они могли бы сохранить реализацию частной. Пока ваш код готов обрабатывать ошибки, использование реализации через документированный интерфейс не связано с недокументированными деталями реализации. – IInspectable