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类的指针,它会接收文件失败操作的具体状态。

 

posted @ 2020-05-07 11:41  StudyToAll  阅读(1197)  评论(0编辑  收藏  举报