我是靠谱客的博主 尊敬魔镜,最近开发中收集的这篇文章主要介绍CFile的使用说明,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

讲的是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::shareExclusive when used in CFile::Open.
  • CFile::typeText   设置成对回车换行对有特殊处理的文本模式(仅用在派生类中)
  • CFile::typeBinary    设置二进制模式(仅用在派生类中)

     

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

    注明:

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

  • 以下------CSDN转载

在VC中,大多数情况对文件的操作都使用系统提供的   API   函数,但有的函数我们不是很熟悉,以下提供一些文件操作   API   函数介绍:  
   
    一般文件操作   API  
   
  CreateFile  
  打开文件  
  要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。  
   
  ReadFile  
  从文件中读取字节信息。    
  在打开文件获得了文件句柄之后,则可以通过该函数读取数据。  
   
  WriteFile    
  向文件写入字节信息。    
  同样可以将文件句柄传给该函数,从而实现对文件数据的写入。  
   
  CloseHandle    
  关闭文件句柄。    
  打开门之后,自然要记得关上。  
   
  GetFileTime    
  获取文件时间。    
  有三个文件时间可供获取:创建时间、最后访问时间、最后写时间。    
  该函数同样需要文件句柄作为入口参数。  
   
  GetFileSize    
  获取文件大小。    
  由于文件大小可以高达上数G(1G需要30位),因此一个32位的双字节类型无法对其精确表达,因此返回码表示低32位,还有一个出口参数可以传出高32位。    
  该函数同样需要文件句柄作为入口参数。  
   
  GetFileAttributes    
  获取文件属性。    
  可以获取文件的存档、只读、系统、隐藏等属性。    
  该函数只需一个文件路径作为参数。  
   
  SetFileAttributes    
  设置文件属性。    
  能获取,自然也应该能设置。    
  可以设置文件的存档、只读、系统、隐藏等属性。    
  该函数只需一个文件路径作为参数。  
   
  GetFileInformationByHandle    
  获取所有文件信息    
  该函数能够获取上面所有函数所能够获取的信息,如大小、属性等,同时还包括一些其他地方无法获取的信息,比如:文件卷标、索引和链接信息。    
  该函数需要文件句柄作为入口参数。  
   
  GetFullPathName    
  获取文件路径,该函数获取文件的完整路径名。  
  需要提醒的是:只有当该文件在当前目录下,结果才正确。如果要得到真正的路径。应该用GetModuleFileName函数。  
   
  CopyFile    
  复制文件    
  注意:只能复制文件,而不能复制目录  
   
  MoveFileEx    
  移动文件    
  既可以移动文件,也可以移动目录,但不能跨越盘符。(Window2000下设置移动标志可以实现跨越盘符操作)  
   
  DeleteFile    
  删除文件  
   
  GetTempPath    
  获取Windows临时目录路径  
   
  GetTempFileName    
  在Windows临时目录路径下创建一个唯一的临时文件  
   
  SetFilePoint    
  移动文件指针。    
  该函数用于对文件进行高级读写操作时。  
   
   
    文件的锁定和解锁  
   
  LockFile    
  UnlockFile    
  LockFileEx    
  UnlockFileEx    
   
  以上四个函数用于对文件进行锁定和解锁。这样可以实现文件的异步操作。可同时对文件的不同部分进行各自的操作。  
   
    文件的压缩和解压缩  
   
  LZOpenFile    
  打开压缩文件以读取  
   
  LZSeek    
  查找压缩文件中的一个位置  
   
  LZRead    
  读一个压缩文件  
   
  LZClose    
  关闭一个压缩文件  
   
  LZCopy    
  复制压缩文件并在处理过程中展开  
   
  GetExpandedName    
  从压缩文件中返回文件名称。  
   
  以上六个函数为32位   API   中的一个小扩展库,文件压缩扩展库中的函数。文件压缩可以用命令   compress   创建。  
   
   
    文件内核对象  
   
          32位   API   提供一个称为文件映像的特性,它允许将文件直接映射为一个应用的虚拟内存空间,这一技术可用于简化和加速文件访问。  
   
  CreateFileMapping    
  创建和命名映射  
   
  MapViewOfFile    
  把文件映射装载如内存  
   
  UnmapViewOfFile    
  释放视图并把变化写回文件  
   
  FlushViewOfFile    
  将视图的变化刷新写入磁盘  
   
  希望通过以上几个常用的   API   函数,能快速的提高文件操作过程函数的编写。

最后

以上就是尊敬魔镜为你收集整理的CFile的使用说明的全部内容,希望文章能够帮你解决CFile的使用说明所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部