• 转:CFile.Open()的使用说明


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

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

        注明:

        OPEN默认是用在CFILE的构造器中,这两个函数提供了一个对文件的安全访问方式,即使发生了错误也会正确的回报错误。

  • 相关阅读:
    args4 1.4.12 编写一个程序,有序打印给定的两个有序数组(含有N 个int 值)中的所有公共元素,程序在最坏情况下所需的运行时间应该和N 成正比。
    优化斐波那契数列递归的计算
    Java中BO、DAO、DO、DTO、PO、POJO、VO的概念
    并查集算法Union-Find的思想、实现以及应用
    计算机网络中一些比较重要的概念
    [转]架构初探之架构的几种设计模式
    常见排序算法的思想以及稳定性分析
    数据库基础知识整理与复习总结
    Java面试之Java集合相关问题答案口述整理
    Java面试之Java基础问题答案口述整理
  • 原文地址:https://www.cnblogs.com/yfz0/p/5257910.html
Copyright © 2020-2023  润新知