如何提取ZIP存档

How extract ZIP archive

本文关键字:ZIP 存档 提取 何提取      更新时间:2023-10-16

帮我从zip存档中提取文件。尝试使用 zlib,但未编译 minizip。想尝试 LZMA,但无法连接到项目。我使用 VS C++ 2010。

谢谢。

如果你对仅限Windows的解决方案感到满意,我发现XZip非常易于使用。你只需要将 XUnzip.h/.cpp 添加到你的项目中,没有别的,没有其他依赖项。

还有 miniz,它是便携式的,但我还没有尝试过(还没有)。

据我所知,LZMA 可以处理整个 zip 存档,而 zlib 只能解压缩包含的数据。zip 存档是压缩文件的集合。因此,您需要先解析存档,然后才能解压缩包含的数据块(文件)。看看维基百科上的文件格式描述。

使用 zlib,你可以做这样的事情:

#define ZLIB_WINAPI
#include <zlib.h>
#include <contribminizipunzip.h>
#pragma comment(lib, "zlibwapi.lib")

bool decompress(void* dest, unsigned long* pcbDest, const void* src, size_t cbSrc)
{
    return uncompress((Bytef*)dest, pcbDest, (const Bytef*)src, cbSrc) == Z_OK;
}

另请参阅codeproject中Gilles Volant的Zip/Unzip API的包装类的工作示例