本文主要是介绍VC++中遍历文件夹下的文档及子文件夹,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
VC中遍历文件夹下的文档及子文件夹
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;
使用方法:
bool find(char * lpPath)
{ printf("******************查找文件开始*************************\n"); char szFile[100]; char szFind[MAX_PATH]; //WIN32_FIND_DATA结构描述了一个由FindFirstFile, //FindFirstFileEx, 或FindNextFile函数查找到的文件信息 WIN32_FIND_DATA FindFileData; memset(szFile,0,100); //为新申请的内存做初始化工作 strcpy(szFind,lpPath); //将lpPath的值拷贝给szFind strcat(szFind,"//*.*"); //联接构成完整路径名,双斜杠//用于组成下一级路径 //通过FindFirstFile()函数根据当前的文件存放路径 //查找该文件来把待操作文件的相关属性读取到WIN32_FIND_DATA结构中去 HANDLE hFind=::FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) { return 0; //如果hFind的句柄值无效,返回0 } while(TRUE) { //将dwFileAttributes和FILE_ATTRIBUTE_DIRECTORY做位"与"运算来判断所找到的项目是不是文件夹, //这段程序的目的是查找文件夹下子文件夹中的内容 if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(FindFileData.cFileName[0]!='.') { strcpy(szFile,lpPath); strcat(szFile,"//"); strcat(szFile,FindFileData.cFileName); find(szFile); } } else { printf("filename:%s\n",FindFileData.cFileName); printf("nFileSizeLow:%d\n",FindFileData.nFileSizeLow); } if(!FindNextFile(hFind,&FindFileData)) break;//如果没有找到下一个文件,结束本次循环 } FindClose(hFind); printf("******************查找文件结束*************************\n"); return 1;
}
这篇关于VC++中遍历文件夹下的文档及子文件夹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!