// 001_遍历文件.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <atlstr.h>#include <windows.h>void listDir(const CString& path, int deep){ if (deep == 0) { return; } WIN32_FIND_DATA wfd = { 0 }; HANDLE hFind = 0; // 查找第一个文件 // 注意, 路径需要加上通配符 hFind = FindFirstFile(path + L"\\*", &wfd); if (hFind == INVALID_HANDLE_VALUE) { return; } do { // 过滤掉当前目录和上层目录 if (wcscmp(wfd.cFileName, L".") == 0 || wcscmp(wfd.cFileName, L"..") == 0) { continue; } wprintf(L"%s\\%s\n",(LPCWSTR)path,wfd.cFileName); // 判断当前遍历到的数据是否是目录 // 可以通过文件属性标志位来判断 if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { // 如果是目录, 就递归扫描这个目录 // 1. 拼接成一个文件路径(遍历得到的文件名 // 只是一个没有路径的文件名) // 传入进来的参数就是它所在的文件夹 // 此时将文件夹和目录名拼接在一起 // 就能得到一个绝对路径了 CString absPath = path + L"\\" + wfd.cFileName; // 递归调用 listDir(absPath, deep - 1); } } while (FindNextFile(hFind,&wfd)); FindClose(hFind);}int main(){ listDir(L"C:\\", 2);}