MFC文件流I/O操作:CFile类

一.简介

    所谓“文件”,一般是指存在外部介质上的数据的集合,一批数据是以文件的形式存放在外部介质(如磁盘、光盘和U盘)上的,操作系统以文件为单位对数据进行管理。对用户来说,常用的文件有两大类:程序文件、数据文件。在程序运行过程中,常常需要将一些数据输出到磁盘上存起来,以后需要时再从磁盘中输入到计算机内存,这种磁盘文件就是数据文件,CFile类操作对象就是这种数据文件。

    CFile类是MFC文件类的基类,提供的以数据文件为对象的输入输出操作,亦称文件I/O类。

二.入门

  步骤1:添加头文件 #include

  步骤2:定义CFile类的对象

    格式:文件流类型   文件流对象名 

//定义输入/输出文件流对象,可读可写             
  CFile       iofile;

  步骤3:打开要操作的文件

    格式:文件流对象名.Open( 文件对象, 打开方式 );

//打开当前工作空间下的名为FileName的文件,如txtfile.txt、wavfile.wav
  iofile.Open( "FileName", 打开方式 );                
//打开绝对路径FilePath下的文件,如D:\\txtfile.txt。注:必须路径是双反斜杠
  iofile.Open( "FilePath", 打开方式 ); 
//以输入方式打开文件,只读。前提是文件必须存在               
  iofile.Open( 文件对象, CFile::modeRead ); 
//建立输出方式文件,只写。如存在此名字文件,则清除原有内容                  
  iofile.Open( 文件对象, CFile::modeCreate|CFile::modeWrite ); 
//以输入输出方式打开文件,可读可写                 
  iofile.Open( 文件对象, CFile::modeWrite|CFile::modeRead ); 
//建立输出方式文件,只写。如存在此名字文件,则保留原有内容       
  iofile.Open( 文件对象, CFile::modeCreate|CFile::modeNoTruncate ); 
//以二进制方式方式打开输出文件      
  iofile.Open( 文件对象, CFile::modeWrite|CFile::typeBinary );

  步骤4:设置文件读写指针位置

    格式:文件流对象名.GetPosition();                                   //获得文件指针当前位置

    格式:文件流对象名.SeekToBegin();                                 //将文件指针移到文件头

    格式:文件流对象名.SeekToEnd()();                                 //将文件指针移到文件尾

    格式:文件流对象.Seek( 位移量,参照位置值 );        //以参照位置为基础将文件指针移动位移量

//将文件读/写指针移到距文件起始100字节位置
  iofile.Seek( 100, CFile::begin );                              
//将文件读/写指针从当前位置向文件尾方向移50字节
  iofile.Seek(  50, CFile::current );                   
//将文件读/写指针从当前位置向文件头方向移50字节
  iofile.Seek( -50, CFile::current );                  
//将文件读/写指针从文件尾回移50字节
  iofile.Seek( -50, CFile::end );

  步骤5:对文件进行读写操作

    格式:文件流对象名.Read/Write( 数据地址, 数据长度 );

 
  
//从文件中读取100字节数据按序从Rbuf地址开始存
  iofile.Read( &Rbuf, 100 );                     
//将Wbuf地址开始的100字节数据按序写入文件
  iofile.Write( &Wbuf, 100 );

  步骤6:操作结束,关闭文件   

    格式:文件流对象名.Close();

三.进阶

  暂无

四.备注

  【1】当需要判断文件读写是否到文件尾时,可联合使用xxfile.GetPosition()函数与xxfile.GetLength()函数。

  【2】在VC6.0下编译程序无误后,生成链接时报错:

             nafxcwd.lib(thrdcore.obj) : error LNK2001:unresolved external symbol __endthreadex

             nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex

             fatal error LNK1120: 2 unresolved externals

          是因为CFile属于MFC类,非C++编译系统提供,故需在软件Project/ Setting/ General下将默认的Not Using MFC改为Use MFC in a Static Library

 

你可能感兴趣的:(VC杂)