Visual C++ 之 文件操作

考虑文档数据的存储,在VC++中可以采用3种方法实现磁盘的读写处理:

1. 采用C++文件流(包括ifstream, ofstream, fstream等)方法处理文件;

2. 将文件作为MFC类CFile的一个对象进行处理;

3. 利用MFC类CArchive对文档进行序列化处理

在MFC应用程序中一般采用序列化方法进行文档的读写,这样可以避免直接处理一个物理文件。


介绍CFile类使用

CFile是一个有关文件处理的MFC类,使用CFile类可以进行文件的打开、关闭和读写操作。CFile类由CObject类直接派生而来,是MFC中所有其他文件类的基类。PS使用MFC的类时,需要在相关文件包含afx.h

1.1 打开文件

两种方法:
(1)调用带参数的构造函数直接打开由参数指定的文件
(2)先调用不带任何参数的构造函数构造一个CFile对象,然后调用CFile的Open()方法打开指定的文件。

打开文件要指定文件的名称(包括路径)和访问方式。
常用的文件访问方式如表:(可以通过或运算符|同时使用满足多种操作需要。)


CFile类常用的文件访问方式:

Visual C++ 之 文件操作_第1张图片

构造函数使用:
CFile file( “C:\\MyFile.txt”, CFile::modeCreate|CFile::modeWrite );
或者
CFile file;
file.open(“C:\\TestFile.txt”, CFile::modeCreate | CFile::modeReadWrite | CFile:: modeNoTruncate );
这段代码以读写方式打开文件TestFile.txt,如果文件不存在就创建一个新文件;如果文件已存在则不将文件长度截断为0(即保留文件内容)。


2.文件读写
通过CFile类的成员函数Read()和Write()来实现
lpBuf是内存缓冲区的首地址,nCount为要读写的字节数。
UINT Read( void ( lpBuf, UINT nCount ) ); // Read()函数的返回值为实际读取的字节数,<=nCount,如果小于nCount说明已经读到文件末尾,如继续读取,返回0;可以根据实际读取的字节数是否小于指定的字节数或者等于0来判断读取是否到达文件末尾。
UINT Write( const void ( lpBuf, UINT nCount ) ); 
读写操作结束后需关闭文件:CFile::Close() 或通过CFile对象的析构函数自动关闭文件。Close()以后CFile对象仍在,可以继续用于打开文件。
实例:利用Cfile类写一个文件复制程序

#include 
#include 

void main()
{
	CFile fileSrc, fileDes;
	char strSrc[20], strDes[20];
	cout << "Please inoput the source file name: ";
	cin >> strSrc ;
	cout << "Please inoput the destination file name: ";
	cin >> strDes ;

	fileSrc.Open(strSrc, CFile::modeRead);
	fileDes.Open(strDes, CFile::modeCreate|CFile::modeWrite);
	char ch;
	while(fileSrc.Read(&ch, 1)) //每次读取一个字节,直到文件结束
		fileDes.Write(&ch, 1);
	fileSrc.Close();
	fileDes.Close();
}


你可能感兴趣的:(C++开发)