📄 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 + -