c遍曆所有文件夾中的文件
一個小程序,可以遍曆所有文件夾中的文件並打印出來
#include "stdio.h"
#include "windows.h"
void find(char * lpPath)
{
char szFind[MAX_PATH],szFile[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
printf("%s\n",FindFileData.cFileName);
//printf("%s\n",FindFileData.dwFileAttributes);
//printf("%d\n",FindFileData.ftCreationTime.dwHighDateTime);
//printf("%d\n",FindFileData.ftCreationTime.dwLowDateTime);
}
if(!FindNextFile(hFind,&FindFileData))
break;
}
}
void main()
{
char filepath[MAX_PATH]="e:\\findobj";
find(filepath);
//system("PAUSE");
}
這個find函數是按字母排序進入文件夾查找【文件夾也在字母排序中】,這個特性十分重要,因為直接決定了我寫的另外一個小程序copy files功能的實現。
加了一句話 printf(szFile);【另外,由這句話發現,在VC++6.0環境中可以直接printf變量,而不用格式占位符。。。】
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
printf(szFile);
find(szFile);
}
}
else
{
printf("%s\n",FindFileData.cFileName);
//printf("%s\n",FindFileData.dwFileAttributes);
//printf("%d\n",FindFileData.ftCreationTime.dwHighDateTime);
//printf("%d\n",FindFileData.ftCreationTime.dwLowDateTime);
}
if(!FindNextFile(hFind,&FindFileData))
break;
}
輸出:

最後更新:2017-04-03 05:39:11