文件合成

xdxkxc 2006-07-23 09:18:51



利用多线程技术设计了一个基于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;
}
...全文
65 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
折腾_苏州 2006-07-23
  • 打赏
  • 举报
回复
你的文件是文本格式么,不是的话用CFile::typeBinary方式打开

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧