#include <stdio.h>
#include <windows.h>
//搜索文件函数
int SearchFile(char *path)
{
char buffer[MAX_PATH] = {0};
sprintf(buffer,"%s\\*.*",path);
WIN32_FIND_DATA pNextInfo;//保存文件信息
HANDLE hFile = 0;
hFile = FindFirstFile(buffer,&pNextInfo);
if ( hFile )
{
do
{
if(pNextInfo.cFileName[0] == '.')//过滤.和..
continue;
//dwFileAttributes值是可以一位或多位的,不好直接使用"=="来判断
if( pNextInfo.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )//判断是否为文件夹
{
ZeroMemory(buffer,MAX_PATH);
sprintf(buffer,"%s\\%s",path,pNextInfo.cFileName);//将文件夹追加到目录,成为下一级要搜索目录
SearchFile(buffer);//递归
}
printf("%s\\%s\n",path,pNextInfo.cFileName);//打印文件路径
}
while (FindNextFile(hFile,&pNextInfo));//遍历文件
}
FindClose(hFile);
return 0;
}
int main(void)
{
char str[MAX_PATH] = "C:\\Windows\\Prefetch";
SearchFile(str);
return 0;
}
/*
// 关于 WIN32_FIND_DATA 的数据结构
typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes; // 文件属性
FILETIME ftCreationTime; // 文件创建时间
FILETIME ftLastAccessTime; // 文件最后一次访问时间
FILETIME ftLastWriteTime; // 文件最后一次修改时间
DWORD nFileSizeHigh; // 文件长度高32位
DWORD nFileSizeLow; // 文件长度低32位
DWORD dwReserved0; // 系统保留
DWORD dwReserved1; // 系统保留
TCHAR cFileName[ MAX_PATH ]; // 长文件名
TCHAR cAlternateFileName[ 14 ]; // 8.3格式文件名
} WIN32_FIND_DATA,
*PWIN32_FIND_DATA,
*LPWIN32_FIND_DATA;
*/