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; }