文件合成
利用多线程技术设计了一个基于http协议的断点续传程序。方法是获取要下载的文件大小后,把它分成4等份再交给4个线程下载处理。
现在4个线程已经成功下载了各自的部分,但是在把这四个子文件合成为要下载的目标文件时,程序抛出了异常。不知道是为什么? 以下是把这四个子文件合成为要下载的目标文件的代码:
DWORD CDownloadDlg::Finish()
{
char* lpData = NULL;
CFile file, t[4];
CString name;
file.Open(m_localfile, CFile::modeCreate | CFile::modeWrite);
for(int i = 0; i < 4; i++)
{
name.Empty();
name.Format(".down%d", i);
name = m_localfile + name;
t[i].Open(name, CFile::modeRead);
DWORD len = t[i].GetLength();
if(lpData)
{
delete [] lpData;
lpData = NULL;
}
if(lpData == NULL)
{
lpData = new char[len];
}
t[i].Read(lpData, len);
file.Write(lpData, len);
t[i].Close();
DeleteFile(name);
}
if(lpData){
delete [] lpData;
lpData = NULL;
}
file.Close();
name.Empty();
name = m_localfile + ".down";
DeleteFile(name);
}
}
return 0;
}