关于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!
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!
CFile是MFC类,是基于SDK API的
CFile是面向对象的,只能在MFC程度里面用
文件存在时把文件文件长度截为0.
1.如果文件不存在,而你是moderead,那么就会出错;
2.如果文件不存在,而采用modewrite,那么系统自动创建一个长度为0的文件,可以往里面写.
不妨根据这个思路运行一下你的程序,检查一下生成的文件,看看里面内容是否你写入的.
{
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的时候设置的参数不当有关系。
莫名其妙的自己又好了