infofile.cpp

来自「wisock应用队列思想实现单线程多任务http下载的类. 实现多文件同时下载」· C++ 代码 · 共 84 行

CPP
84
字号
#include ".\infofile.h"
CInfoFile::CInfoFile()
{
	m_pFile = NULL;
	m_pNetFlow = CNetFlowRecoder::GetInstance();
}
CInfoFile::CInfoFile( LPTSTR fileName )
{
	m_pNetFlow = CNetFlowRecoder::GetInstance();
	_tcscpy(m_szFileName,fileName);
	_tcscat(m_szFileName,POSTFIX);
}

CInfoFile::~CInfoFile(void)
{
	if(m_pFile!=NULL)
		fclose(m_pFile);
}

INFOFILESTATE CInfoFile::OpenFile( LPTSTR fileName )
{
	m_pFile = fopen(fileName ,"r+b");//
	if( NULL == m_pFile)
	{
		m_pFile = fopen(fileName,"w+b");
		if( NULL == m_pFile )
			return INFOFILE_ERROR;
		else
			return INFOFILE_NO_EXIST;
	}
	return INFOFILE_EXIST;
}

INFOFILESTATE CInfoFile::OpenFile()
{
	m_pFile = fopen(m_szFileName ,"r+b");//
	if( NULL == m_pFile)
	{
		m_pFile = fopen(m_szFileName,"wb");
		if( NULL == m_pFile )
			return INFOFILE_ERROR;
		else
			return INFOFILE_NO_EXIST;
	}
	return INFOFILE_EXIST;
}

bool CInfoFile::WriteProcessInfo( CDownloadFile *downFile)
{
	m_pNetFlow->m_isBegin = true;
	if((NULL == downFile)||(NULL == m_pFile ))
	{
		return false;
	}
	else
	{
		if(m_pNetFlow->IsCompleted() )
		{
			fclose(m_pFile);
			remove(m_szFileName);
		}
		else
		{			
			fseek(m_pFile,0,SEEK_SET );
			fwrite((void*)downFile,1,sizeof(CDownloadFile),m_pFile);
		}
		return true;
	}
}


bool CInfoFile::ReadProcessInfo( CDownloadFile *downFile)
{
	if(NULL == m_pFile )
	{
		//throw?
		return false;
	}
	else
	{
		fseek(m_pFile,0,SEEK_SET );
		return (fread((void*)downFile,1,sizeof(CDownloadFile),m_pFile) == sizeof(CDownloadFile));	
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?