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