|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
namespace NFile
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
class CFileEx
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CFileEx(CFile* pFile);
|
|
|
|
|
|
virtual ~CFileEx(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags);
|
|
|
|
|
|
virtual void Close();
|
|
|
|
|
|
|
|
|
|
|
|
virtual UINT ReadString(char* pBuffer, UINT nMaxSize); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
|
|
|
|
|
virtual UINT GetString(char* pBuffer, UINT nMaxSize); //<2F><>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կո<D4BF><D5B8><EFBFBD><EFBFBD>س<EFBFBD>Ϊ<EFBFBD><CEAA>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual UINT Read(void *buffer, UINT nCount);
|
|
|
|
|
|
virtual void Write(const void *buffer, UINT nCount);
|
|
|
|
|
|
virtual void Flush();
|
|
|
|
|
|
|
|
|
|
|
|
//SEEK_SET //<2F><>ʼ
|
|
|
|
|
|
//SEEK_CUR //<2F><>ǰ
|
|
|
|
|
|
//SEEK_END //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
virtual ULONGLONG Seek(LONGLONG offset, UINT origin);
|
|
|
|
|
|
virtual void SeekToBegin( );
|
|
|
|
|
|
virtual void SeekToEnd( );
|
|
|
|
|
|
virtual ULONGLONG GetPosition();
|
|
|
|
|
|
virtual ULONGLONG GetLength();
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL IsEof();
|
|
|
|
|
|
virtual CString GetFileName();
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
BOOL m_bCloseFile;
|
|
|
|
|
|
CFile* m_pFile;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>ȡ<EFBFBD>ڴ洮<DAB4><E6B4AE><EFBFBD><EFBFBD>
|
|
|
|
|
|
class CMemFileEx : public CFileEx
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CMemFileBase(void);
|
|
|
|
|
|
CMemFileBase(BYTE* pBuffer, DWORD nSize);
|
|
|
|
|
|
virtual ~CMemFileBase(void);
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL Open(void); //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
|
virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags); //û<><C3BB>ʹ<EFBFBD><CAB9>
|
|
|
|
|
|
virtual void Close();
|
|
|
|
|
|
|
|
|
|
|
|
virtual UINT Read(void *buffer, UINT nCount);
|
|
|
|
|
|
virtual UINT Write(const void *buffer, UINT nCount);
|
|
|
|
|
|
virtual void Flush();
|
|
|
|
|
|
|
|
|
|
|
|
virtual BOOL Seek(long offset, int origin);
|
|
|
|
|
|
virtual void SeekToBegin( );
|
|
|
|
|
|
virtual void SeekToEnd( );
|
|
|
|
|
|
virtual long GetPosition();
|
|
|
|
|
|
|
|
|
|
|
|
virtual long GetLength();
|
|
|
|
|
|
virtual BOOL IsEof();
|
|
|
|
|
|
virtual CString GetFileName();
|
|
|
|
|
|
|
|
|
|
|
|
void SetBuffer(BYTE* pBuffer, UINT nSize);
|
|
|
|
|
|
BYTE* GetBuffer(BOOL bDetachBuffer);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void Alloc(DWORD nBytes);
|
|
|
|
|
|
|
|
|
|
|
|
BYTE* m_pBuffer;
|
|
|
|
|
|
UINT m_nSize;
|
|
|
|
|
|
BOOL m_bFreeOnClose;
|
|
|
|
|
|
long m_Position; //current position
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
|
class CMapFileBase : public CMemFileBase
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CMapFileBase(void);
|
|
|
|
|
|
virtual ~CMapFileBase(void);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
using namespace NFile;
|