You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
1.8 KiB
C

1 month ago
#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;