0

我正在使用zlib解压缩 zip 文件的列表。这是简单的方法。但是SetCurrentDirectory函数调用会影响我的其他线程。有没有办法使用zlib解压缩到特定目录。

SetCurrentDirectory("c:\\docs\\stuff");
HZIP hz = OpenZip("c:\\stuff.zip",0);
ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
for (int i=0; i<numitems; i++)
{ GetZipItem(hz,i,&ze);
   UnzipItem(hz,i,ze.name);
 }
 CloseZip(hz);
4

2 回答 2

1

您所拥有的是一个包装器,可以轻松使用 zlib 库。您已将问题标记为 C++,您正在使用 C++ 的包装器,同时您正在使用利用此包装器的全局帮助器 API。

我建议您直接使用 TUnzip 包装器(以如何UnzipItemInternal实现为例)。TUnzip 类有一个很好的方法允许设置基本目录ZRESULT TUnzip::SetUnzipBaseDir(const TCHAR *dir)。调用它来设置目录

于 2013-03-04T04:34:42.523 回答
1

找到了解决方案。

void unZipPackage(std::wstring zip_file,std::wstring dest_dir){ 

    HZIP hz = OpenZip(zip_file.c_str(),0);  
    ZIPENTRY ze; GetZipItem(hz,-1,&ze); int numitems=ze.index;
    for (int i=0; i<numitems; i++)
    { 
        GetZipItem(hz,i,&ze);               
        wchar_t dest[MAX_PATH];
        swprintf(dest,MAX_PATH,L"%s\\%s",dest_dir.c_str(),ze.name);     
        UnzipItem(hz,i,dest);       
    }   
    CloseZip(hz);
}
于 2013-03-05T03:13:11.243 回答