bool ZipPlatform::GetFileSize(LPCTSTR lpszFileName, ZIP_U32_U64& dSize) { CZipFile f; if (!f.Open(lpszFileName, CZipFile::modeRead | CZipFile::shareDenyWrite, false)) return false; bool ret; try { ZIP_FILE_USIZE size = f.GetLength(); // the file may be too large if zip64 is not enabled ret = size <= ZIP_U32_U64(-1); if (ret) dSize = (ZIP_U32_U64)size; } #ifdef ZIP_ARCHIVE_MFC catch(CZipBaseException* e) { e->Delete(); ret = false; } #else catch(CZipBaseException e) { ret = false; } #endif try { f.Close(); } #ifdef ZIP_ARCHIVE_MFC catch(CZipBaseException* e) { e->Delete(); } #else catch(CZipBaseException e) { } #endif return ret; }
void PosLmUnzipUtil::UnzipFileL(RFs& aFs, TFileName* aFileName) { CZipFile* zipFile = NULL; CZipFileMember* member = NULL; CZipFileMemberIterator* fileMembers = NULL; zipFile = CZipFile::NewL(aFs,*aFileName); CleanupStack::PushL(zipFile); User::LeaveIfError(zipFile->OpenL()); fileMembers = zipFile->GetMembersL(); CleanupStack::PushL(fileMembers); member = fileMembers->NextL(); while (member) { //You must take ownership of the member object created for you by NextL()! CleanupStack::PushL(member); ExtractFileL(aFs, member, zipFile, aFileName); CleanupStack::PopAndDestroy(); //member member = fileMembers->NextL(); } zipFile->Close(); CleanupStack::PopAndDestroy(2); //fileMembers, zipFile }