wuyun317 2014-02-24 08:22 采纳率: 0%
浏览 1926

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);
}
}
程序运行出错,希望各位指点一下。之前再网上找了很多相关的问题,有的人说只能先在线程初始化的时候将文件创建好才能进行写入,可是像我这样要求的当写满一定大小的时候重新创建文件写入应该如何解决呢?求指点!

  • 写回答

1条回答

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 18:58
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?