一个小程序,可以遍历所有文件夹中的文件并打印出来
#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; }
输出: