⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memorysharefilestream.cpp

📁 自己写的一个IO库
💻 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 + -