Unzip with zlib without using SetCurrentDirectory
我正在使用zlib解压缩zip文件列表。这是执行此操作的简单方法。但是
1 2 3 4 5 6 7 8 | 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); |
找到了解决方案。
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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); } |
您拥有的包装器可以轻松使用zlib库。您已将问题标记为C,正在使用c的包装器,同时使用了利用该包装器的全局帮助器API。
我建议您直接使用TUnzip包装器(请参见如何实现