CFile.Open()的使用说明

转载 2013年12月04日 15:34:18
 
 

在程序中碰到这个一段代码:

讲的是CFILE类的文件操作,故参考MSDN系统学习一下(翻译了一下英文):

CFile file;
CFileException fe;

//打开文件
if(!file.Open(lpszPathName,CFile::modeRead|CFile::shareDenyWrite,&fe))
{
   ReportSaveLoadException(lpszPathName,&fe,FALSE,AFX_IDP_FAILED_TO_OPEN_DOC);
  
   return FALSE;
}

CFIIE类是MFC的文件类的基类,它直接提供无缓冲的二进制 磁盘I/O设备,并且通过它的派生类可以提供对text文件和内存文件的存取。CFILE与CArchive类一起提供对MFC序列化的支持。

CFILE类和它的派生类之间的等级关系,允许你的程序通过多态的CFILE界面对所有文件类进行操作。比如内存文件,或者磁盘文件以及类似的。

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    让构造器创建一个新文件,如果那个文件已经存在,把那个文件的长度重设为
  • CFile::modeNoTruncate    可以同modeCreate. 一起用,如果要创建的文件已经存在,并不把它长度设置为0,因而这个文件获取或者作为一个新建文件或者作为一个已存在文件打开。这个功能往往很好用,比如说,当你需要打开一个设置文件,但是你并不清楚这个文件是否已经存在。
  • CFile::modeRead 打开文件仅供读
  • CFile::modeReadWrite    打开文件供读写
  • CFile::modeWrite   打开文件只供写
  • CFile::modeNoInherit    阻止这个文件被子进程继承
  • CFile::shareDenyNone 打开这个文件同时允许其它进程读写这个文件。如果文件被其它进程以incompatibility模式打开,这是create操作会失败。
  • CFile::shareDenyRead   打开文件拒绝其它任何进程读这个文件。如果文件被其它进程用compatibility模式或者是读方式打开,create操作失败。
  • CFile::shareDenyWrite   打开文件拒绝其它任何进程写这个文件。如果文件被其它进程用compatibility模式或者是写方式打开,create操作失败。
  • CFile::shareExclusive   以独占方式打开这个文件,不允许其它进程读写这个文件。 Construction fails if the file has been opened in any other mode for read or write access, even by the current process.
  • CFile::shareCompat    这个标志在32位的MFC中无效。 This flag maps to CFile::shareExclusivewhen used in CFile::Open.
  • CFile::typeText   设置成对回车换行对有特殊处理的文本模式(仅用在派生类中)
  • CFile::typeBinary    设置二进制模式(仅用在派生类中)

     

    pError-------一个指向一个已经存在的file-exception类的指针,它会接收文件失败操作的具体状态。

     

即时通讯软件中 CFile.Open() 使用说明

 写即时通讯的时候,蚊子132 要了解即时通讯软件中 CFile.Open() 使用说明,下面详细介绍一下。 在程中碰到这个一段代码: 讲的是CFILE类的文件操作,故参考MSDN系统学...
  • mynote
  • mynote
  • 2014年05月14日 21:29
  • 601

控制台应用程序中调用CFileException 的GetErrorMessage方法时出现“Debug Assertion Failed”错误时的解决办法

这两天帮测试一位同事写的一个从dat文件中读取数据的方法,该方法中打开文件的代码大致如下:   CStdioFile file;    //文件流 CFileException fileExcepti...
  • Edward007
  • Edward007
  • 2008年05月14日 07:13
  • 2330

如何正确的使用CFile::Open中的参数?

 This line intentionally left blank.CFile 使用方法,写 FreePoster 时用来测试的。  [问题提出]  我设计了一个从记事本中读数据的程序。将数据显示...
  • mynote
  • mynote
  • 2008年01月25日 11:10
  • 5624

Druid使用说明

数据库连接池有很多比如c3p0,dbcp等。今天我们说下druid连接池。 druid连接池文档被维护在githubweb.xml DruidWebStatFilter ...
  • cuisongliu
  • cuisongliu
  • 2015年10月20日 14:35
  • 633

SVN初学者使用说明

工作过程中要学习SVN,所以今天专门的搜了资料,写在这里也是让自己以后回过头可以看看。 SVN简介:  为什么要使用SVN?       程序员在编写程序的过程中,每个程序员都会生成很多不同的版...
  • talent_CYJ
  • talent_CYJ
  • 2016年04月12日 14:28
  • 5077

词Ci 介绍页 StackView的使用

词Ci的介绍页是这样的,可以上下滑动翻页。 这样效果自己要实现还是很麻烦的,后来发现已经有了Stack'View就是这样效果了,要做的就是使用啦。 public class Introdu...
  • mzm489321926
  • mzm489321926
  • 2015年08月28日 15:48
  • 264

kindle paperwhite 使用说明

txt 如何转换 mobi
  • wide288
  • wide288
  • 2013年08月04日 18:37
  • 1708

指纹考勤机使用说明

指纹考勤机使用说明 一、指纹考勤机特点及主要功能分析 1、指纹考勤机特点   指纹考勤具有识别速度快、准确、方便等特点,让考勤实现智能化。但使用中受限于指纹膜的寿命,高端机指纹考勤机在这方面有做...
  • albert1222344
  • albert1222344
  • 2017年02月14日 10:27
  • 509

小熊鼠标键盘模拟工具 使用说明 及核心代码

旧版本有些问题,请下载新版本 最版版本一载地址 很多人问的问题是怎么模拟向QQ群发送信息的  其实标题就说了是模拟鼠标,按键。 具体哪些按键呢,可能有些人习惯鼠标操作不太清楚,其实也很...
  • zanfeng
  • zanfeng
  • 2015年01月11日 14:26
  • 1494

macOS上的改键指南--使用Karabiner

macOS上的改键指南使用Karabiner Karabiner在9.3.0之前的版本叫做KeyRemap4MacBook,是macOS上一款功能强大的自定义键盘软件,支持全局使用vim,emacs...
  • zhouwe1
  • zhouwe1
  • 2017年06月24日 02:24
  • 354
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CFile.Open()的使用说明
举报原因:
原因补充:

(最多只允许输入30个字)