MFC文件操作

cfile:: open

virtual BOOL Open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL );

返回值:成功为非0,否则为0,仅当返回值为0时pError参数才有意义

先直观的举两个读写的例子:

//文件写入

  if(!file.Open(lpszPathName,CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate,NULL))
  {
     ReportSaveLoadException(lpszPathName,&fe,FALSE,AFX_IDP_FAILED_TO_OPEN_DOC);
     return FALSE;
  }

  file.Write(buf,len);    

//文件读出

  file.Open("E:\\VC\\1.txt",CFile::modeRead,NULL); 

  file.Read(Buf,len);

其中buf是数据指针,len是要写入/读取的字节数,在文件操作完毕后,需要执行file.close( )关闭文件柄。

接下来具体说明一下open()函数里的参数含义:

  nOpenFlags的常用模式有:

1-1  CFile文件打开方式

标志

含义

CFile::modeCreate

  创建新文件,如果文件已存在,则将其长度变成0

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

  以独占模式打开文件,禁止其他进程对文件的读写

CFile::typeText

  以文本方式打开文件

CFile::typeBinary

  以二进制方式打开文

 

参数:

lpszFileName   需要打开文件的路径字符串,这个路径可以是相对路径也可以是绝对路径,或者是网络名字(UNC)

nOpenFlags   一个UINT定义文件的存取共享模式。它指定文件打开时可以采取的操作。你可以使用”|"号来组合多个选项。文件的一个存取权限和一个共享选项是必须要指定的。而modeCreate 和modeNoInherit是可选的。

CFile提供了一些常用的操作函数,如表1-2所示。 

1-2  CFile操作函数

函数

含义

Open

打开文件

Close

关闭文件

Flush

刷新待写的数据

Read

从当前位置读取数据

Write

向当前位置写入数据

GetLength

获取文件的大小

Seek

定位文件指针至指定位置

SeekToBegin

定位文件指针至文件头

SeekToEnd

定位文件指针至文件尾

GetFileName

获取文件名,如:“NOTEPAD.EXE”

GetFilePath

获取文件路径,如:“C:\WINDOWS \NOTEPAD.EXE”

GetFileTitle

获取文件标题,如:“NOTEPAD”

GetPosition

获取当前文件指针

GetStatus

获取当前文件的状态,返回一个CFileStatus

#Remove

静态方法,删除指定文件

#Rename

静态方法,重命名指定文件

注意最后两个静态函数,其实它们封装了Windows API中关于文件管理的函数。

 

使用CFile操作文件的流程如下:

  1. 构造一个CFile对象。
  2. 调用CFile::Open()函数创建、打开指定的文件。
  3. 调用CFile::Read()CFile::Write ()进行文件操作。
  4. 调用CFile::Close()关闭文件句柄。

 文件指针的位置设置可以使用

Seek(LONG offset,UINT nFrom)  把文件指针移动到指定位置

lOff :是指针偏移字节数,若向后偏移则为正数,若向前偏移,则为负数。

nFromMSDN上有三种取值:

CFile::begin 从文件开头开始算起,lOff为正数;

CFile::current 当前位置开始算起;

CFile::end   从文件结尾开始算起,lOff为负数;

SeekToBegin()     把文件指针移到文件开头

SeekToEnd()         把文件指针移到文件末尾

GetPosition( )       返回当前文件指针的位置

转载于:https://www.cnblogs.com/boole/p/3182169.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值