2 wuyun317 wuyun317 于 2014.02.24 16:22 提问

MFC多线程创建文件写数据

初始化线程时创建文件如下(以当前时间命名文件于当前进程的当前目录):
if(hThread)//初始化线程
{
cTime = cTime.GetCurrentTime();
tmp = cTime.Format(_T("%Y%m%d%H%M%S"));
GetCurrentDirectory(MAX_PATH, path);//返回当前进程的当前目录
str_file_netpath.Format(_T("%s"),path);
str_file_netpath = str_file_netpath + T("\wSock") + tmp + T(".txt");
file_net.Open(str_file_netpath, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyNone);
}
要求当文件写满一定大小时重新创建一个新的文件,继续数据的存储:
UINT ClientThread(LPVOID pParam)
{
CFileStatus status;
CFile::GetStatus(dlg->str_file_netpath,status);
ULONGLONG lSizeOfFile;
lSizeOfFile = status.m_size;
if(lSizeOfFile>1073741824)//文件大小大于1G时重新打开文档写入数据
{
dlg->file_net.Close();
dlg->cTime = dlg->cTime.GetCurrentTime();
tmp = dlg->cTime.Format(_T("%Y%m%d%H%M%S"));
GetCurrentDirectory(MAX_PATH, dlg->path);//返回当前进程的当前目录
dlg->str_file_netpath.Format(_T("%s"),dlg->path);
dlg->str_file_netpath = dlg->str_file_netpath + _T("\wSock
") + tmp + _T(".txt");
dlg->UpdateData(FALSE);
}
dlg->file_net.Open(dlg->str_file_netpath, CFile::modeCreate | CFile::modeWrite | CFile::shareDenyNone);
//dlg->file_net.SeekToEnd();
//dlg->file_net.WriteString(tmp1);
}
}
程序运行出错,希望各位指点一下。之前再网上找了很多相关的问题,有的人说只能先在线程初始化的时候将文件创建好才能进行写入,可是像我这样要求的当写满一定大小的时候重新创建文件写入应该如何解决呢?求指点!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!