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