关于CFile读写的问题(急急急急!!!)

mickeyhao85 2009-01-02 12:39:18
关于CFile的读写我有点疑惑

CFile file;
file.open(path,CFile::modeWrite)
往文本中写的时候一定要文本存在吧,如果文本不存在是创建的,得加上CFile::modeCreate是吧?

不太明白有时为什么要用CreateFile

HANDLE hFile=CreateFile( Filename,GENERIC_WRITE,FILE_SHARE_READ,NULL,
CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);

CFile file((int)hFile);

不是直接用CFile::modeCreate 就可以创建吗?有什么区别这两个...望详解...

问题2:
文本不存在我直接往里面写了(只用了modeWrite如下),在模拟器里面好像文本也创建了一切正常,也没报错...
CFile file;
file.open(path,CFile::modeWrite)
但我在正式平台上运行程序的时候
程序在file.close这句就自动退出了,也没报错,很奇怪...我现在分析可能是文件没创建的原因...
希望高手帮我分析下

望高手详细回答上面两个问题,最好帮我详细介绍下CFile类
THX!
...全文
240 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mickeyhao85 2009-01-06
  • 打赏
  • 举报
回复
THX各位了
莫名其妙的自己又好了
weidong0210 2009-01-04
  • 打赏
  • 举报
回复
学习
noenoughmemory 2009-01-03
  • 打赏
  • 举报
回复
不懂,up
naxiahucao 2009-01-03
  • 打赏
  • 举报
回复
MFC
qzf368 2009-01-03
  • 打赏
  • 举报
回复
学习了
Cpp权哥 2009-01-03
  • 打赏
  • 举报
回复
你可以检查open函数的返回值,如果为真表示打开成功,为假表示失败。
ccpaishi 2009-01-03
  • 打赏
  • 举报
回复
createfile是win的sdk,任何windows上的文件函数,最终都是调用这个函数来实现的
一名程序员 2009-01-03
  • 打赏
  • 举报
回复
void CFile::Close()
{
ASSERT_VALID(this);
ASSERT(m_hFile != (UINT)hFileNull);

BOOL bError = FALSE;
if (m_hFile != (UINT)hFileNull)
bError = !::CloseHandle((HANDLE)m_hFile);

m_hFile = (UINT) hFileNull;
m_bCloseOnDelete = FALSE;
m_strFileName.Empty();

if (bError)
CFileException::ThrowOsError((LONG)::GetLastError());
}

以上是CFile::Close()的源代码。其中楼主的程序估计是在最后一行抛出了异常。
也就是说bError = !::CloseHandle((HANDLE)m_hFile);一句可能有问题。
但具体的问题,可能与楼主Open的时候设置的参数不当有关系。
Show_Mike 2009-01-03
  • 打赏
  • 举报
回复
注意这点区别:
1.如果文件不存在,而你是moderead,那么就会出错;
2.如果文件不存在,而采用modewrite,那么系统自动创建一个长度为0的文件,可以往里面写.
不妨根据这个思路运行一下你的程序,检查一下生成的文件,看看里面内容是否你写入的.
mickeyhao85 2009-01-02
  • 打赏
  • 举报
回复
第二个问题高手们发表点意见啊...
bluesky395 2009-01-02
  • 打赏
  • 举报
回复
学习
蒋晟 2009-01-02
  • 打赏
  • 举报
回复
CreateFile是面向过程的,支持各种语言
CFile是面向对象的,只能在MFC程度里面用
schlafenhamster 2009-01-02
  • 打赏
  • 举报
回复
file.open(path,CFile::modeWrite) 文件不存在时会Create一个0长度的文件.
文件存在时把文件文件长度截为0.
wocow3 2009-01-02
  • 打赏
  • 举报
回复
CreateFile 是SDK API,是底层
CFile是MFC类,是基于SDK API的

15,980

社区成员

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

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