#include <windows.h>
#include <stdio.h>
char *ml = "C://windows";
int k = 0 ;
void findFile(char filePath[]) //遍历文件函数
{
char szFind[MAX_PATH];
char szFile[MAX_PATH];
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
strcpy(szFind,filePath);
strcat(szFind,"//*.*"); //应用通配符找这个目录下的所以文件,包括目录
hFind=FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//这是目录
{
if(FindFileData.cFileName[0]!='.') //.表示当前目录,由于每个目录下面都有两个默许目录就是..和.分别表示上一级目录和当前目录
{
strcpy(szFile,filePath);
strcat(szFile,"//");
strcat(szFile,FindFileData.cFileName);
findFile(szFile); //寻觅这个目录下面的文件
}
}
else
{
printf("%s//%s/n",filePath,FindFileData.cFileName);//打印出目录下的文件的途径和称号
k++;
}
if(!FindNextFile(hFind,&FindFileData)) //寻觅下一个文件
break;
}
FindClose(hFind); //关闭句柄
}
int main()
{
findFile(ml);
printf("文件总数 : %d/n",k);
return 0;
}