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++
86 lines
1.8 KiB
C++
#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); //读取一行字符串
|
|
virtual UINT GetString(char* pBuffer, UINT nMaxSize); //读取一段字符串(以空格或回车为终止符)
|
|
virtual UINT Read(void *buffer, UINT nCount);
|
|
virtual void Write(const void *buffer, UINT nCount);
|
|
virtual void Flush();
|
|
|
|
//SEEK_SET //开始
|
|
//SEEK_CUR //当前
|
|
//SEEK_END //结束
|
|
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;
|
|
};
|
|
|
|
//读取内存串数据
|
|
class CMemFileEx : public CFileEx
|
|
{
|
|
public:
|
|
CMemFileBase(void);
|
|
CMemFileBase(BYTE* pBuffer, DWORD nSize);
|
|
virtual ~CMemFileBase(void);
|
|
|
|
virtual BOOL Open(void); //自动申请内存
|
|
virtual BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags); //没有使用
|
|
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
|
|
};
|
|
|
|
//利用文件映射打开文件
|
|
class CMapFileBase : public CMemFileBase
|
|
{
|
|
public:
|
|
CMapFileBase(void);
|
|
virtual ~CMapFileBase(void);
|
|
};
|
|
|
|
};
|
|
|
|
using namespace NFile;
|