C/C++文件操作之CFile

CFileMFC文件类的基类,主要是在开发MFC应用程序时对文件操作比较方便。下面主要记录CFile类中常用的成员函数。

1、打开文件

(1)CFile(LPCTSTR lpszFileName,UINT nOpenFlags);//CFile类的一个构造函数

功能:打开一个文件

参数:lpszFileName 文件路径,此路径可为相对的也可为绝对的路径。 

     nOpenFlags 文件打开方式

其中打开方式nOpenFlags有以下取值:

CFile::modeCreate 构造新文件,若文件存在则设文件长度为0

CFile::modeNoTruncate 与modeCreate组合使用所创建的文件已存在则其长度不变为0

CFile::modeRead 以读的方式打开文件

CFile::modeReadWrite 以读写的方式打开文件

CFile::modeWrite 以写的方式打开文件

CFile::modeNoInherit 阻止文件被子进程继承

CFile::modeShareDenyNone 不禁止其它进程读或写访问CFile::modeDenyRead 禁止其它进程读此文件

CFile::modeDenyWrite 禁止其它进程写此文件

CFile::ShareExcelusive 以独占方式打开文件,禁止其它进程对其读写

CFile::shareCompat open函数里与CFile::ShareExcelusive一样

CFile::typeText 对回车换行设置特殊进程(只用在派生类)

CFile::typeBinary 设置二进制模式(只用在派生类)

使用如下:

CFile file("D:\\1.txt",CFile::modeRead|CFile::mode::Write);

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

功能:打开文件

参数:lpszFileName 文件路径,此路径可为相对的也可为绝对的路径。 

     nOpenFlags 打开方式

     pError 指向一个存在的文件异常对象,获取失败操作的状态。 

返回值:打开成功返回TRUE,否则返回FLASE

使用如下:

CFile file;

File.open("D:\\1.txt",CFile::modeRead|CFile::modeWrite);//这里使用的参数pError的缺省值NULL;

2、关闭文件

virtual void Close( );

使用如下:

file.close();

3、写入/读出

(1)virtual UINT Read (void* lpBuf,UINT nCount);

功能:从文件中读取nCount个字节到lpBuf

参数:lpBuf 用来读取数据的缓冲区

     nCount 读取数据的最大字节数

返回值:实际读取的字节数

使用如下:

char lpBuf[128];

File.Read(lpBuf,100);//从文件中读取100个字节数到lpBuf

(2)DWORD ReadHuge(void* lpBuffer,DWORD dwCount);

功能:读取超过64k字节数据到缓冲区中

参数:lpBufffer 用来读取数据的缓冲区

     dwCount 读取数据的最大字节数

返回值:实际读取的字节数

用法与read一样

(3)virtual UINT Write(const void* lpBuf,UINT nCount);

功能:将缓冲区中的数据写入到文件中

参数:lpBuf 存放准备写入文件的数据缓冲区

     nCount 写入文件的最大字节数

返回值:实际写入文件的字节数

使用如下:

char* lpBuf = "C++ Programming";

file.Write(lpBuf,sizeof(lpBuf));

(4)(DWORD WriteHuge(void* lpBuffer,DWORD dwCount);

功能:写入超过64k字节数据到文件中

参数:lpBufffer 用来存放准备写入数据的缓冲区

     dwCount 写入数据的最大字节数

返回值:实际写入的字节数

用法与Write一样

4、定位文件

(1)virtual LONG Seek(LONG lOff,UINT nFrom);

功能:定位当前文件指针

参数:lOff 指针移动的字节数

     nFrom 指针移动模式

移动模式有如下三种:

CFile::begin 从文件起始位置开始向后移动lOff个字节

CFile::current 从当前文件指针开始向后移动lOff个字节

CFile::end 从文件末尾开始向前移动lOff个字节(此时lOff应为负数)返回值:lOff合法,则Seek返回从文件开始起的新字节偏移量。否则值未定义并产生CFileException异常。

使用如下:

file.Seek(100,CFile::begin);//从文件起始位置向前移动100个字节

(2)void SeekToBegin();

功能:文件指针移到文件起始位置

使用如下:

file.SeekToBegin();

(3)void SeekToEnd();

功能:文件指针移到文件末尾

使用如下:

file.SeekToEnd();

(4)virtual DWORD GetLength( ) const;

功能:获取文件长度

返回值:文件的长度

使用如下:

DWORD Length;

Length = file.GetLength();

(5)virtual void SetLength(DWORD dwNewLen);

功能:设置文件长度

使用如下:

file.SetLength(1000);

5、文件路径

(1)virtual CString GetFilePath( )const;

功能:获取文件的完整路径

返回值:文件的完整路径

使用如下:

CString FilePath;

FilePath = file.GetFilePath();

(2)virtual void SetFilePath(LPCTSTR lpszNewName);

功能:设置文件的完整路径

使用如下:

file.SetFilePath("D:\\1.txt");

(3)virtual DWORD GetPosition ( )const;

功能:获取文件指针相对于起始位置的偏移量,经常与Seek一起用

返回值文件指针相对于起始位置的偏移量

(4)static void PASCAL Rename(LPCTSTR lpszOldName,LPCTSTR lpszNewName);

功能:改名指定文件

参数:lpszOldName 原文件完全路径

     lpszNewName 新文件完全路径

使用如下:

file.Rename("D:\\1.txt","D:\\2.txt");

(5)static void PASCAL Remove(LPCTSTR lpszFileName);

功能:删除文件

参数:lpszFileName 需要删除的文件的相对路径或绝对路径

使用如下:

file.Remove("D:\\1.txt");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值