CFile问题!!!求解释!!!!!

lhl403647596 2012-12-07 10:33:51
我能不能让一个线程向文件中写入数据,一个线程向文件中读取数据那!?
如果不可以有没有什么别的好的解决办法!!!
CFile file("1.txt",CFile::modeCreate | CFile::shareDenyWrite);
file.Write("asdfasdf",sizeof("asdfasdf"));
为什么说文件访问失败那!???
...全文
188 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cy2015yc 2012-12-07
  • 打赏
  • 举报
回复
引用 4 楼 lhl403647596 的回复:
引用 2 楼 hfz8867879 的回复: 获取一下错误码,GetLastError() 刚才我把CFile file("1.txt",CFile::modeCreate | CFile::shareDenyWrite); 改成CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);了。 然后file.Write("asdfasd……
楼主,你自己已经解决了问题了。modeWrite就是指明这个文件打开是为写数据的,如果不加这个mode,file。Write()自然失败的。shareDenyWrite是指明独占写方式打开这个文件,这两个值一个代表读写模式,一个代表共享模式,不要混淆。当然可以两个参数一起用,如: CFile file("1.txt",CFile::modeCreate | CFile::modeWrite | CFile::shareDenyWrite); 以下是MSDN的解释: CFile::modeWrite Opens the file for writing only. CFile::shareDenyNone Opens the file without denying other processes read or write access to the file. 至于两个线程访问一个文件,自然是可以的,做好互斥就行。
lgstudyvc 2012-12-07
  • 打赏
  • 举报
回复
你的问题和标题不符 可以的 要加解锁,保证读的是有效数据
看不见的裂痕 2012-12-07
  • 打赏
  • 举报
回复
之前是不是有步骤已独占形式打开了? file.close就可以了 再重新建立CFile的open看看
hztj2005 2012-12-07
  • 打赏
  • 举报
回复
CFile::shareDenyWrite是不允许其它进程写此文件.
w_xei 2012-12-07
  • 打赏
  • 举报
回复
建议使用一个文件句柄操作,使用临界区保证安全就可以
yyyyy_3 2012-12-07
  • 打赏
  • 举报
回复
可以,但要加同步.
九州剑王 2012-12-07
  • 打赏
  • 举报
回复
你百度下读写锁
lhl403647596 2012-12-07
  • 打赏
  • 举报
回复
引用 2 楼 hfz8867879 的回复:
获取一下错误码,GetLastError()
刚才我把CFile file("1.txt",CFile::modeCreate | CFile::shareDenyWrite); 改成CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);了。 然后file.Write("asdfasdf",sizeof("asdfasdf"));这句话就没错了,是为什么呀!?
lhl403647596 2012-12-07
  • 打赏
  • 举报
回复

就是这个错误,但是单步CFile file("1.txt",CFile::modeCreate | CFile::shareDenyWrite);
这句可以过去,出问题的是file.Write("asdfasdf",sizeof("asdfasdf"));
这句话@!!!
九州剑王 2012-12-07
  • 打赏
  • 举报
回复
获取一下错误码,GetLastError()
九州剑王 2012-12-07
  • 打赏
  • 举报
回复
因为你的写线程想写的时候发现文件被读线程占用,根本就打不开的吧
cy2015yc 2012-12-07
  • 打赏
  • 举报
回复
引用 12 楼 lhl403647596 的回复:
最后问一下,CFile类可以对已有数据的文件,不清空文件的情况下,向后面加东西吗?
当然可以加上参数 CFile::modeNoTruncate
lhl403647596 2012-12-07
  • 打赏
  • 举报
回复
最后问一下,CFile类可以对已有数据的文件,不清空文件的情况下,向后面加东西吗?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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