4.11 递归遍历目录树

效果

4.11 递归遍历目录树_第1张图片

源码

#include

#include

DWORD dwTotalFileNum = 0;

DWORD ListAllFileInDrectory(LPSTR szPath){

CHAR szFilePath[MAX_PATH];

WIN32_FIND_DATA FindFileData;

HANDLE hListFile;

CHAR szFullPath[MAX_PATH];

lstrcpy(szFilePath, szPath);

lstrcat(szFilePath, "\\*");

//查找第一个文件/目录,获得句柄

hListFile = FindFirstFile(szFilePath, &FindFileData);

if (hListFile == INVALID_HANDLE_VALUE){

printf("错误: %d\n", GetLastError());

return 1;

} else{

do{

//过滤 . 和 .. 不需要遍历

if(lstrcmp(FindFileData.cFileName,TEXT(".")) == 0 || lstrcmp(FindFileData.cFileName,TEXT("..")) == 0){

continue;

}

//构造全路径

wsprintf(szFullPath, "%s\\%s", szPath, FindFileData.cFileName);

dwTotalFileNum++;

//打印

printf("%d\t%s",dwTotalFileNum,szFullPath);

if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){

printf(" 目录\n");

ListAllFileInDrectory(szFullPath);

} else{

printf("\n");

}

} while (FindNextFile(hListFile, &FindFileData));

}

return 0;

}

int main(int argc, PCHAR argv[]){

if (argc == 2){

ListAllFileInDrectory(argv[1]);//遍历指定的目录

} else{

CHAR szCurrentPath[MAX_PATH];

GetCurrentDirectory(MAX_PATH, szCurrentPath);//遍历当前目录

ListAllFileInDrectory(szCurrentPath);

}

getchar();

return 0;

}

你可能感兴趣的:(4.11 递归遍历目录树)