效果
源码
#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;
}