VC++实现遍历指定文件夹,并进行深度遍历,一级,二级。。。最终列出该文件夹下所有文件全路径。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| #include "stdafx.h" #include <iostream> #include <Windows.h> using namespace std; /************************************ @ Brief: 判断文件是否存在 @ Author: woniu201 @ Created: 2018/09/12 @ Return: ************************************/ BOOL IsDirExist(char* csDir) { DWORD dwAttrib = GetFileAttributes(csDir); return INVALID_FILE_ATTRIBUTES != dwAttrib && 0 != (dwAttrib & FILE_ATTRIBUTE_DIRECTORY); } /************************************ @ Brief: 遍历文件夹 @ Author: woniu201 @ Created: 2018/09/13 @ Return: ************************************/ BOOL DirectoryList(char* path) { WIN32_FIND_DATA FindData; HANDLE handle; char fullName[2048] = {0}; char filePathName[2048] = {0}; strcpy(filePathName, path); strcat(filePathName, "\\*.*"); handle = FindFirstFile(filePathName, &FindData); if (handle == INVALID_HANDLE_VALUE) { cout << "搜索失败" << endl; } while(FindNextFile(handle, &FindData)) { //过滤.和.. if (strcmp(FindData.cFileName, ".") == 0 || strcmp(FindData.cFileName, "..") == 0) { continue; } sprintf(fullName, "%s\\%s", path, FindData.cFileName); cout << fullName << endl; //判断是否是文件夹 if (IsDirExist(fullName)) { DirectoryList(fullName); } } FindClose(handle); return TRUE; } int _tmain(int argc, _TCHAR* argv[]) { DirectoryList("c:\\"); getchar(); return 0; }
|