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

📄 infofile.cpp

📁 wisock应用队列思想实现单线程多任务http下载的类. 实现多文件同时下载,断点续传,流量统计等.
💻 CPP
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -