downloadfile.cpp

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

CPP
76
字号
#include ".\downloadfile.h"

CDownloadFile::CDownloadFile()
{
	m_iCurOffset = 0;
	m_iContentLen = 0;
	m_pFile = NULL;
}

CDownloadFile::CDownloadFile( LPCTSTR lpszSavePath,LPTSTR lpszFileName )
{
	m_iCurOffset = 0;
	m_iContentLen = 0;
//	m_pFile = fopen( lpszFileName,"w+b");
	_tcscpy(m_lpszSavePath,lpszSavePath);
	_tcscpy(m_lpszFileName,lpszFileName);
}

CDownloadFile::~CDownloadFile(void)
{
	if( m_pFile != NULL )
		fclose(m_pFile);
	m_pFile = NULL;
	printf("closeFile\n");
}

void CDownloadFile::OpenFile()
{
	TCHAR localURL[10240];
	_tcscpy(localURL,m_lpszSavePath);
	_tcscat(localURL,m_lpszFileName);
	m_pFile = fopen( m_lpszFileName,"r+b");

	if(NULL == m_pFile)
		m_pFile = fopen( m_lpszFileName,"w+b");

}

void CDownloadFile::SaveFile( LPTSTR buffer,int bufSize )
{
	if(NULL == m_pFile)
	{
		//文件未初始化,exception
	}
	else
	{
		int recvSize ;
		recvSize = fwrite(buffer,sizeof(CHAR),bufSize,m_pFile);

		if( recvSize != sizeof(CHAR)*bufSize )
		{
			//写文件出错,exception
		}

		else
		{
			m_iCurOffset += recvSize;
		}
		if( m_iCurOffset == m_iContentLen )
		{
			CloseFile();
		}
	}
}

void CDownloadFile::CloseFile()
{
	if( m_pFile != NULL )
		fclose(m_pFile);
	m_pFile = NULL;
}

void CDownloadFile::SetContentLen(UINT len)
{
	m_iContentLen = len;
}

⌨️ 快捷键说明

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