?? memorysharefilestream.cpp
字號:
#include "../include/MemoryShareFileStream.h"
using namespace IMS_IO;
/************************************************************************/
/*打開文件*/
/************************************************************************/
bool CMemoryShareFileStream::open(const char *pHandler,int length,char *pFlag)
{
m_memFileHandler.pContent=(unsigned char* )pHandler;
m_memFileHandler.nLength=length;
this->m_memFileHandler.bOPen = true;
this->m_memFileHandler.bClose = false;
return true;
}
/************************************************************************/
/*移動指針*/
/************************************************************************/
int CMemoryShareFileStream::seek(long offset,int origin)
{
if(!this->m_memFileHandler.bOPen) //文件沒有打開
return -1;
long nSeekedPos = 0;
switch(origin) // -2表示越界
{
case SEEK_SET:
nSeekedPos = offset;
break;
case SEEK_CUR:
nSeekedPos = offset + this->m_memFileHandler.nCurPos;
break;
case SEEK_END:
nSeekedPos = offset + this->m_memFileHandler.nLength;
break;
default:
return -3;
}
//確認移動后的位置還在存儲區中
if(nSeekedPos >=0 && nSeekedPos < this->m_memFileHandler.nLength)
{
this->m_memFileHandler.nCurPos = nSeekedPos;
}else //越界
return -2;
return 0;
}
/************************************************************************/
/*讀文件內容 */
/************************************************************************/
int CMemoryShareFileStream::read(void *pBuffer,int size,int count)
{
if(!this->m_memFileHandler.bOPen) //文件沒有打開
return -1;
long nReadedPos = this->m_memFileHandler.nCurPos + size * count;
if(nReadedPos <=0 || nReadedPos > this->m_memFileHandler.nLength) //越界了
return -2;
//讀取內容
unsigned char *pTemp = this->m_memFileHandler.pContent;
pTemp += this->m_memFileHandler.nCurPos;
memcpy(pBuffer,pTemp,size * count);
//更該讀取后的當前位置
this->m_memFileHandler.nCurPos = nReadedPos;
return size * count;
return 0;
}
/************************************************************************/
/*關閉流 */
/************************************************************************/
bool CMemoryShareFileStream::close()
{
if(!this->m_memFileHandler.bOPen)
return true;
this->m_memFileHandler.bClose = true;
this->m_memFileHandler.bOPen = false;
this->m_memFileHandler.nCurPos = 0;
this->m_memFileHandler.nLength = 0;
delete[] this->m_memFileHandler.pContent;
this->m_memFileHandler.pContent = NULL;
return true;
}
/************************************************************************/
/*長度 */
/************************************************************************/
long CMemoryShareFileStream::length()
{
if(!this->m_memFileHandler.bOPen) //文件沒有打開
return -1;
return this->m_memFileHandler.nLength;
}
/************************************************************************/
/*取得當前位置 */
/************************************************************************/
long CMemoryShareFileStream::getPos()
{
return this->m_memFileHandler.nCurPos;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -