📅  最后修改于: 2023-12-03 14:44:16.053000             🧑  作者: Mango
MFC(Microsoft Foundation Class)是微软公司开发的一个面向对象的C++类库,其中提供了许多用于Windows操作系统编程的类和函数。其中包括了关于文件管理的类。
MFC中提供了以下类来操作文件系统:
使用CFile
的成员函数Open
可以创建文件。
CFile file;
// 创建文件 "example.txt"
BOOL isOpen = file.Open(_T("example.txt"), CFile::modeCreate | CFile::modeWrite);
if (isOpen == TRUE)
{
// 文件创建成功
file.Close();
}
else
{
// 文件创建失败
}
使用CFile
的成员函数Write
可以写文件。
CFile file;
// 打开文件 "example.txt"
BOOL isOpen = file.Open(_T("example.txt"), CFile::modeWrite);
if (isOpen == TRUE)
{
// 写入字符串 "Hello, world!"
char str[] = "Hello, world!";
file.Write(str, strlen(str));
file.Close();
}
else
{
// 文件打开失败
}
使用CFile
的成员函数Read
可以读文件。
CFile file;
// 打开文件 "example.txt"
BOOL isOpen = file.Open(_T("example.txt"), CFile::modeRead);
if (isOpen == TRUE)
{
// 读取文件内容
char str[256];
int nRead = file.Read(str, sizeof(str) - 1);
str[nRead] = '\0';
printf("%s\n", str);
file.Close();
}
else
{
// 文件打开失败
}
使用CFile::Remove
可以删除文件。
BOOL isRemoved = CFile::Remove(_T("example.txt"));
if (isRemoved == TRUE)
{
// 文件删除成功
}
else
{
// 文件删除失败
}
使用CFileFind
可以在文件系统中查找文件。
CFileFind finder;
// 在当前目录下查找所有的.txt文件
BOOL isFind = finder.FindFile(_T("*.txt"));
while (isFind)
{
isFind = finder.FindNextFile();
// 输出文件名
printf("%s\n", finder.GetFileName());
}
finder.Close();
文件I/O操作中可能会出现一些异常情况,例如文件打开失败、读写文件失败等。使用CFileException
可以捕获这些异常。
CFile file;
CFileException exception;
// 打开文件 "example.txt"
BOOL isOpen = file.Open(_T("example.txt"), CFile::modeCreate | CFile::modeWrite, &exception);
if (isOpen == TRUE)
{
try
{
// 写入字符串 "Hello, world!"
char str[] = "Hello, world!";
file.Write(str, strlen(str));
file.Close();
}
catch (CFileException* e)
{
// 文件写入失败
e->Delete();
}
}
else
{
// 文件打开失败
TCHAR szErrorMsg[255];
exception.GetErrorMessage(szErrorMsg, 255);
printf("%s\n", szErrorMsg);
}
MFC提供了非常丰富的文件系统操作类,可以方便地进行文件的创建、读写、查找和删除等操作。对于文件I/O操作时的异常情况,也提供了CFileException来方便地处理异常。