CFileFind::FindNextFile 是 CFileFind 类的一个公共方法,用于查找目录中的下一个文件或子目录。通过调用此方法,可以在文件查找过程中逐个获取目录下的文件和子目录的信息。

以下是一个简单的示例,演示如何使用 CFileFind::FindNextFile 方法来获取目录中的文件和子目录:
#include <afx.h>

void FindFilesInDirectory(const CString& directory)
{
    CFileFind finder;

    // 构造函数初始化,设置初始查找路径
    BOOL bWorking = finder.FindFile(directory + _T("\\*.*"));

    if (bWorking)
    {
        // 查找成功,继续处理找到的文件或目录
        while (bWorking)
        {
            bWorking = finder.FindNextFile();  // 查找下一个文件

            if (finder.IsDots())
                continue; // 忽略 "." 和 ".."

            if (finder.IsDirectory())
            {
                // 处理子目录
                // finder.GetFileName() 可以获取当前找到的目录名
                // 递归调用 FindFilesInDirectory() 可以继续在子目录中查找文件
                // ...
            }
            else
            {
                // 处理文件
                // finder.GetFileName() 可以获取当前找到的文件名
                // ...
            }
        }

        finder.Close(); // 关闭文件查找
    }
    else
    {
        // 查找失败,可能目录不存在或其他错误
        // 处理错误情况
    }
}

在上述示例中,finder.FindNextFile() 被用于在查找过程中获取目录中的下一个文件或子目录的信息。如果查找成功,CFileFind 对象的状态将被更新以反映新找到的文件或目录。可以通过调用 finder.IsDirectory() 来判断当前项是文件还是目录,并使用 finder.GetFileName() 获取当前找到的文件或目录的名称。

需要注意的是,在使用 CFileFind 进行文件查找时,应该在循环中不断调用 FindNextFile,直到它返回 FALSE,表示没有更多的文件或目录可供查找。




转载请注明出处:http://www.pingtaimeng.com/article/detail/17779/MFC/CFileFind