📄 mfile.cpp
字号:
// MFile.cpp: implementation of the CMFile class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MFile.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMFile::CMFile()
{
m_buflen=0;
m_Rseekpos=0;
m_Wseekpos=0;
m_pbuf=NULL;
m_filelen=0;
}
CMFile::~CMFile()
{
if (m_pbuf!=NULL) delete m_pbuf;
}
void CMFile::resizebuffer(int size)
{
char *newbuf;
int len;
if (size>m_buflen) {
len=(size/1024+1)*1024;
newbuf = new char [len];
if (m_pbuf!=NULL){
memcpy(newbuf,m_pbuf,m_buflen);
delete m_pbuf;
}
m_pbuf=newbuf;
m_buflen=len;
}
}
int CMFile::open(int mode ,char *buf,int size)
{
m_mode = mode;
switch(mode) {
case MF_MODE_READ:
case MF_MODE_APPEND:
m_filelen=size;
resizebuffer(size);
write(buf,size);
m_Rseekpos=0;
m_Wseekpos=0;
break;
case MF_MODE_CREATE:
if (size) {
resizebuffer(size);
}
m_filelen=0;
m_Rseekpos=0;
m_Wseekpos=0;
}
return 0;
}
void CMFile::close()
{
m_Rseekpos=0; m_Wseekpos=0;
}
int CMFile::read(char *buf, int size)
{
if (size >= m_filelen-m_Rseekpos ) return -1;
memcpy(buf,m_pbuf + m_Rseekpos,size);
m_Rseekpos+=size;
return size;
}
int CMFile::write(char *buf, int size)
{
if (size >= m_buflen-m_Wseekpos ){
resizebuffer(m_buflen+size);
}
if (m_Wseekpos+size > m_filelen) {
m_filelen = m_Wseekpos+size;
}
memcpy(m_pbuf + m_Wseekpos,buf,size);
m_Wseekpos+=size;
m_Rseekpos+=size;
return size;
}
int CMFile::seek(int pos, int mode)
{
switch(mode){
case SEEK_CUR:
m_Wseekpos += pos;
m_Rseekpos += pos;
break;
case SEEK_SET:
m_Wseekpos = pos;
m_Rseekpos = pos;
break;
case SEEK_END:
m_Wseekpos = m_filelen;
m_Rseekpos = m_filelen;
break;
}
if (m_Rseekpos>=m_buflen) return -1;
return 0;
}
int CMFile::tell()
{ return m_Rseekpos; }
char * CMFile::getcurdata()
{
return m_pbuf + m_Rseekpos;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -