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

📄 downloadfile.cpp

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