ZipFile.h
上传用户:wymy58
上传日期:2007-01-07
资源大小:2086k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // Copyright (C) 1999 DXGuide.  All Rights Reserved.
  2. // File: ZipFile.h
  3. #ifndef _ZIPFILE__H
  4. #define _ZIPFILE__H
  5. #if _MSC_VER >= 1000
  6. #pragma once
  7. #endif // _MSC_VER >= 1000
  8. #include "PackFileBaseClass.h"
  9. #ifdef _DEBUG
  10. #include "CheckSum.h"
  11. #endif // _DEBUG
  12. class CInflater;
  13. class CZipFile : public CPackFileBaseClass
  14. {
  15. friend class CZipFileManager;
  16. public:
  17. CZipFile(void);
  18. virtual ~CZipFile();
  19. public:
  20. virtual bool Open(CPackFileManagerBaseClass*  pPackFileManager, LPCTSTR  lpszName);
  21. public:
  22. virtual int Read(LPVOID  pBuf, int  nSize);
  23. virtual LONG Seek(LONG  lOff, CFile::SeekPosition  seekPos = CFile::begin);
  24. virtual LONG Tell(void) const;
  25. virtual LONG GetFileSize(void) const;
  26. virtual CString GetFileName(void) const
  27. {
  28. return  m_strName;
  29. }
  30. public:
  31. // Returns true if this is a directory entry. A directory
  32. // entry is defined to be one whose name ends with a '/'.
  33. bool IsDirectory(void) const
  34. {
  35. return  m_strName[m_strName.GetLength() - 1] == _T('/');
  36. }
  37. LONG Rewind(void);
  38. // internal information about a file in zipfile, when reading and decompress it
  39. protected:
  40. CFile* m_pFile;
  41. CString m_strName; // entry name
  42. WORD m_wFlag;
  43. WORD m_wCompressionMethod; // compression method (0 == store)
  44. DWORD m_dwDosTime;
  45. DWORD m_dwCrc32;
  46. DWORD m_dwCompressedSize;
  47. DWORD m_dwUncompressedSize;
  48. LONG m_lStartPos;
  49. LONG m_lCurPosInZipFile; // position in byte on the zipfile
  50. protected:
  51. BYTE* m_pInputBuf; // internal buffer for compressed data
  52. CInflater* m_pInflater; // for inflate
  53. #ifdef _DEBUG
  54. CChecksum m_checksum; // crc32 of all data uncompressed
  55. #endif // _DEBUG
  56. };
  57. #endif // _ZIPFILE__H