VC++遍历文件夹完整代码解析

需积分: 10 22 下载量 77 浏览量 更新于2024-10-16 收藏 5KB TXT 举报
"VC++遍历文件方法实现" 在VC++编程中,遍历文件是一项常见的任务,用于搜索、处理或管理指定目录下的文件。以下介绍两种常用的遍历文件的方法: 1. 使用`FindFirstFile`/`FindNextFile`函数 这是Windows API提供的一种基础遍历文件的方法。首先,你需要创建一个`WIN32_FIND_DATA`结构体来存储文件信息,然后调用`FindFirstFile`函数开始遍历。这个函数会返回第一个匹配的文件或目录的句柄。之后,通过不断调用`FindNextFile`函数获取下一个文件或目录的信息。如果遍历结束,`FindNextFile`会返回`FALSE`。最后别忘了使用`FindClose`关闭找到的文件句柄。 以下是一个简单的示例: ```cpp #include <windows.h> #include <iostream> void find(char* lpPath) { char szFind[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFind, lpPath); strcat(szFind, "*.*"); HANDLE hFind = ::FindFirstFile(szFind, &FindFileData); if (INVALID_HANDLE_VALUE == hFind) return; while (TRUE) { if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (FindFileData.cFileName[0] != '.') { // 对于目录进行递归查找 char szFile[MAX_PATH]; strcpy(szFile, lpPath); strcat(szFile, "\\"); strcat(szFile, FindFileData.cFileName); find(szFile); } } else { std::cout << FindFileData.cFileName; // 在这里处理非目录文件 } if (!FindNextFile(hFind, &FindFileData)) break; } FindClose(hFind); } ``` 2. 利用`CStringArray`存储文件路径 在上述方法的基础上,如果你需要存储所有遍历到的文件路径,可以使用MFC中的`CStringArray`容器。首先清空数组,然后在遍历过程中将每个文件路径添加到`CStringArray`中。以下是一个例子: ```cpp #include <afxdb.h> class CXXXXX { public: CStringArray m_PathArray; // 存储文件路径的数组 void find(TCHAR* lpPath) { // 定义遍历函数 m_PathArray.RemoveAll(); // 清空数组 // 省略了FindFirstFile/FindNextFile的具体实现,类似上述代码 // 当找到文件时,将其路径添加到数组 m_PathArray.Add(filePath.GetBuffer()); } }; ``` 在这个例子中,`m_PathArray`是一个成员变量,用于存储遍历到的所有文件路径。在遍历过程中,每次找到一个文件,就将对应的路径字符串添加到`m_PathArray`中,这样就可以在后续的操作中方便地访问这些文件。 以上就是VC++中遍历文件的两种常见方法,第一种是基础的API调用,第二种结合了容器类的使用,提供了更灵活的数据管理。在实际应用中,你可以根据项目需求选择合适的方法,并进行相应的功能扩展,如添加过滤条件、处理文件内容等。