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

lhl403647596 2012-12-07 10:33:51
我能不能让一个线程向文件中写入数据,一个线程向文件中读取数据那!?
如果不可以有没有什么别的好的解决办法!!!
CFile file("1.txt",CFile::modeCreate | CFile::shareDenyWrite);
file.Write("asdfasdf",sizeof("asdfasdf"));
为什么说文件访问失败那!???
...全文
128 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
你的问题和标题不符 可以的 要加解锁,保证读的是有效数据
回复
傻X 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类可以对已有数据的文件,不清空文件的情况下,向后面加东西吗?
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2012-12-07 10:33
社区公告

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