c遍历所有文件夹中的文件

来源:互联网 发布:环太平洋 知乎 机型 编辑:程序博客网 时间:2024/05/18 16:15

一个小程序,可以遍历所有文件夹中的文件并打印出来


#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;}


输出:



0 0
原创粉丝点击