📜  MFC-文件系统(1)

📅  最后修改于: 2023-12-03 14:44:16.053000             🧑  作者: Mango

MFC-文件系统介绍

MFC(Microsoft Foundation Class)是微软公司开发的一个面向对象的C++类库,其中提供了许多用于Windows操作系统编程的类和函数。其中包括了关于文件管理的类。

文件系统类

MFC中提供了以下类来操作文件系统:

  • CFile:用于文件I/O操作。
  • CFileException:用于捕获文件I/O操作时的异常。
  • CFileFind:用于在文件系统中查找文件。
  • CStdioFile:用于读写文本文件。
文件I/O操作
创建文件

使用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来方便地处理异常。