CFile.Open()的使用说明
在阅读代码时,看到有这一段,就查了一下CFile.Open()的用法,随笔记录:
radar_file1.Open(pParam->str,CFile::modeWrite|CFile::modeCreate| CFile::modeNoTruncate );
CFILE类时MFC的文件基类,他直接提供无缓冲的二进制磁盘I/O设备,并且通过它的派生类可以提供对text文件和内存文件
的存取。CFILE与CArchive类一起提供对MFC序列化得支持。
CFILE和它的派生类用于执行一般的磁盘I/O惭怍。而OFSTREAM或者奇特的微软iostream类则是用于把格式化text输出到磁
盘文件上去。
通常,CFILE类的构造过程中会自动打开磁盘文件,在析构函数中则会自动关闭文件。你可以使用静态成员函数来询问文件的
状态而不用打开文件。
使用CFILE类必须包含 #include <afx.h>
Cfile::Open()
virtual BOOL Open(LPCTSTR LpszFileName, UINT nOpenFlags, CFileException * pError = NULL);
返回值:成功返回非0,失败返回0,仅当返回值为0是pError参数才有意义。
LpszFileName:需要打开文件路径的字符串,这个路径可以是相对路径,也可以是绝对路径,或是网络名字(UNC)
nOpenFlags:一个UINT定义文件的存取共享模式。它指定文件打开时可以采取的操作。你可以使用“|”号来组合多个选项。
文件的一个存取权限和一个共享选项是必须要指定的。二modeCreate和modeNoInherit是可选的。
具体如下:
CFile::modeCreate 让构造器创建一个新文件,如果那个文件已经存在,把那个文件的长度重设为0;
CFile::modeNoTruncate 可以同modeCreate一起使用,如果要创建的文件已经存在,并不把它长度设置为0,因而这个
文件获取或者作为一个新文件或者作为一个已经存在文件打开。这个功能往往很好用,比如说,当你需要打开一个设置文件,
但是你并不清楚这个文件是否已经存在。
CFile::modeRead 打开文件,仅供读
CFile::modeReadWrite 打开文件供读写
CFile::modeWrite 打开文件,只供写
CFile::modeNoInherit 阻止这个文件被子进程继承
CFile::shareDenyNode 打开文件同时允许其它进程读写这个文件。如果文件被其他进程以incompatibility模式打开,
这时create操作会失败。
CFile::shareDenyRead 打开文件拒绝其他任何进程度这个文件。如果文件被其他进程以compatibility模式或者是读方
式打开,create操作失败。
CFile::shareDenyWrite 打开文件拒绝其它任何进程写这个文件。如果文件被其它进程用compatibility模式或者是写
方式打开,create操作失败。
CFile::shareExclusive 以独占方式打开这个文件,不允许其它进程读写这个文件。
CFile::shareCompat 这个标志在32位的MFC中无效。 This flag maps to CFile::shareExclusivewhen used in CFile::Open.
CFile::typeText 设置成对回车换行对有特殊处理的文本模式(仅用在派生类中)
CFile::typeBinary 设置二进制模式(仅用在派生类中)
pError-------一个指向一个已经存在的file-exception类的指针,它会接收文件失败操作的具体状态。