EVC内存和文件交互
//========================================================================
//TITLE:
// EVC内存和文件交互
//AUTHOR:
// norains
//DATE:
// Saturday 13-May-2006
//========================================================================
采用MFC的CFile类可以很方便实现将文件的数据读入内存,或者把内存的数据保存为文件.
/*************************************************************/
作用:将文件数据读入内存
szFilePath:读取的文件路径
pBaseBuf:写入的内存缓冲区
dwBufLen:写入的内存缓冲区长度
/*************************************************************/
BOOL CopyFileDateToMem(CString szFilePath,PBYTE &pBaseBuf,DWORD &dwBufLen)
{
CFile mFile(szFilePath,CFile::modeRead);
dwBufLen=mFile.GetLength();
pBaseBuf=(PBYTE)realloc (pBaseBuf, dwBufLen);
if(pBaseBuf==NULL)
return FALSE;
mFile.Read(pBaseBuf,dwBufLen);
mFile.Close();
return TRUE;
}
/*************************************************************/
作用:将内存数据写入文件
pBaseBuf:读取的内存缓冲区
dwBufLen:读取的内存缓冲区长度
szFilePath:写入的文件路径
/*************************************************************/
BOOL CopyMemDateToFile(PBYTE pBaseBuf, DWORD dwBufLen, CString szFilePath)
{
CFile mFile(szFilePath,CFile::modeWrite|CFile::modeCreate);
mFile.Write(pBaseBuf,dwBufLen);
mFile.Flush();
mFile.Close();
return TRUE;
}
调用的方法也很简单,不过需要注意的是,在调用之前,需要对缓冲区进行初始化:
BOOL OnlyTest()
{
DWORD m_dwReadBufLen;
DWORD m_dwSaveBufLen;
PBYTE m_pBaseReadBuf;
PBYTE m_pBaseSaveBuf;
m_pBaseReadBuf = reinterpret_cast<PBYTE>(malloc(1));
m_pBaseSaveBuf = reinterpret_cast<PBYTE>(malloc(1));
if(CopyFileDateToMem(L"test1.txt",m_pBaseReadBuf,m_dwReadBufLen))
{
return TRUE;
}
else
{
return FALSE;
}
if(CopyMemDateToFile(m_pBaseSaveBuf,m_dwSaveBufLen,L"test2.txt"))
{
return TRUE;
}
else
{
return FALSE;
}
}