www.pudn.com > Zlib_com.zip > ZipReader.cpp


// ZipReader.cpp : Implementation of CZipReader 
#include "stdafx.h" 
#include "AaronsZipUtils.h" 
#include "ZipReader.h" 
 
///////////////////////////////////////////////////////////////////////////// 
// CZipReader 
 
 
STDMETHODIMP CZipReader::Open(BSTR fileName) 
{ 
	AFX_MANAGE_STATE(AfxGetStaticModuleState()) 
 
	if (!m_ZipArchive.IsClosed()) 
		m_ZipArchive.Close(); 
 
	CString strFileName(fileName); 
	m_ZipArchive.Open(strFileName); 
	return S_OK; 
} 
 
STDMETHODIMP CZipReader::GetCount(long *count) 
{ 
	AFX_MANAGE_STATE(AfxGetStaticModuleState()) 
 
	long num = m_ZipArchive.GetNoEntries(); 
	*count = num; 
	return S_OK; 
} 
 
 
STDMETHODIMP CZipReader::GetFileName(long index, BSTR *fileName) 
{ 
	AFX_MANAGE_STATE(AfxGetStaticModuleState()) 
 
	CFileHeader fh; 
	m_ZipArchive.GetFileInfo(fh, (WORD)index); 
	*fileName = fh.m_szFileName.AllocSysString(); 
	return S_OK; 
} 
 
 
STDMETHODIMP CZipReader::GetFileLastModified(long index, BSTR *lastModified) 
{ 
	AFX_MANAGE_STATE(AfxGetStaticModuleState()) 
 
	CFileHeader fh; 
	m_ZipArchive.GetFileInfo(fh, (WORD)index); 
	CTime time = fh.GetTime(); 
	*lastModified = time.Format("%c").AllocSysString(); 
	return S_OK; 
} 
 
 
STDMETHODIMP CZipReader::GetCompressedSize(long index, long *size) 
{ 
	AFX_MANAGE_STATE(AfxGetStaticModuleState()) 
 
	CFileHeader fh; 
	m_ZipArchive.GetFileInfo(fh, (WORD)index); 
	*size = fh.m_uComprSize; 
	return S_OK; 
} 
 
STDMETHODIMP CZipReader::GetUncompressedSize(long index, long *size) 
{ 
	AFX_MANAGE_STATE(AfxGetStaticModuleState()) 
 
	CFileHeader fh; 
	m_ZipArchive.GetFileInfo(fh, (WORD)index); 
	*size = fh.m_uUncomprSize; 
	return S_OK; 
}