要实现指定目录下文件的遍历需要执行一下的部分:
第一步获取当前路径的名字:(MAX_PATH是在windows定义的所有的路径名字不超过其,调用该函数会使得得到当前的目录)
#include <Windows.h> char buff[MAX_PATH]; GetCurrentDirectory(MAX_PATH, buff);
接下来我们所要做的操作就是一个一个的找文件,遇到文件夹进递归,进去找到所有的文件,下面就是具体实现的代码输入参数就是我们刚刚获得的当前路径。
int findfile(char * filepath { char pathname[MAX_PATH]; WIN32_FIND_DATAA next; HANDLE handle; sprintf(pathname,"%s\\*.*", filepath);//这一步很重要 handle=FindFirstFile(pathname, &next); if (handle == INVALID_HANDLE_VALUE) { cout << "搜索失败" << endl; return 1; } char buff[MAX_PATH]; while (1) { if (FindNextFile(handle, &next) == FALSE) return 0; else { if (next.cFileName[0] == '.') continue;//用FindNextFile刚开始有.或者..,我们要避免这种情况 memset(buff, 0, MAX_PATH); sprintf(buff, "%s\\%s", filepath, next.cFileName);//文件的绝对路径 if (next.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { findfile(buff); } else { cout << buff << endl; } } } }