以只读方式打开一个文件

来源:百度知道 编辑:UC知道 时间:2024/05/16 10:56:34
在MFC中创建一个对话框。把所有自动生成的空间删掉。再添加一个button控件。
在button控件的Click事件中添加代码:
char* pszFileName="c:\\13.txt";
CStdioFile myFile;
CFileException fileException;
if(!myFile.Open(pszFileName,
CFile::modeCreate|CFile::typeText|CFile::modeRead),
&fileException)
{
TRACE("Can't open the file %s,error=%u\n",
pszFileName,fileException.m_cause);
}
运行程序,点击按钮后。为什么不会打开13.txt文件?
未解决

楼主出的错,我想不是没有打开。楼上诸位在代码方面的解答是正确的,但是我估计楼主还会看见trace,因为我实验时候看见了:)其实文件已经创建了并且被打开了。不信你在trace行加个断点,然后手动打开文件,会提示已经被打开。楼主的验证方式是错误的,具体怎么验证还要麻烦各位大大了

是Open函数的打开模式错误,而且文件创建后要关闭……

你要创建就不要加modeRead,要读取就不要加modeCreate

char* pszFileName="c:\\13.txt";
CStdioFile myFile;
CFileException fileException;
if(!myFile.Open(pszFileName,CFile::modeRead),
&fileException)
{
TRACE("Can't open the file %s,error=%u\n",
pszFileName,fileException.m_cause);

}

这样改就好了,还要记得close文件的

建议楼主这样修改
TCHAR pszFileName[]=_T("c:\\13.txt"); // 请确认C盘根目录有写入权限
// ...
if(!myFile.Open(pszFileName,
CFile::modeCreate|CFile::modeReadWrite|CFile::shareDenyWrite),
&fileException) // 文件操作期间不允许其他进程将其修改或删除
// ...

myFile.Close(); // 操作结束后关闭文件