使用FindFirstFile和FindNextFile查找某个目录下的所有文件(包括子目录) |
| 来源:网络收集 整理日期:08月25日 19:38 学新网:studynew.com |
| 一、在不使用mfc的程序中获得某个目录下的所有文件名称,包括子目录。把文件名称以一个固定的程度放入一个缓冲中,这个缓冲要足够的大,能容下所有的文件名称。 函数的输入为要查找的根目录,输出为存放所有文件名称的缓冲 算法:使用递归 void FindFileInDir(char* rootDir, char* strRet) { char fname[MAC_FILENAMELENOPATH]; ZeroMemory(fname, MAC_FILENAMELENOPATH);
WIN32_FIND_DATA fd; ZeroMemory(&fd, sizeof(WIN32_FIND_DATA));
HANDLE hSearch; char filePathName[256]; char tmpPath[256]; ZeroMemory(filePathName, 256); ZeroMemory(tmpPath, 256);
strcpy(filePathName, rootDir);
BOOL bSearchFinished = FALSE;
if( filePathName[strlen(filePathName) -1] != // ) { strcat(filePathName, //); }
strcat(filePathName, *);
hSearch = FindFirstFile(filePathName, &fd);
//Is directory if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp(fd.cFileName, .) && strcmp(fd.cFileName, ..) ) { strcpy(tmpPath, rootDir); strcat(tmpPath, fd.cFileName); FindFileInDir(tmpPath, strRet); }
else if( strcmp(fd.cFileName, .) && strcmp(fd.cFileName, ..) ) { sprintf(fname, %-50.50s, fd.cFileName); strcat(strRet + strRet[strlen(strRet)] , fname); }
while( !bSearchFinished ) { if( FindNextFile(hSearch, &fd) ) { if( (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp(fd.cFileName, .) && strcmp(fd.cFileName, ..) ) { strcpy(tmpPath, rootDir); strcat(tmpPath, fd.cFileName); FindFileInDir(tmpPath, strRet); }
else if( strcmp(fd.cFileName, .) && strcmp(fd.cFileName, ..) ) { sprintf(fname, %-50.50s, fd.cFileName); strcat(strRet + strRet[strlen(strRet)] , fname); } } else { if( GetLastError() == ERROR_NO_MORE_FILES ) //Normal Finished { bSearchFinished = TRUE; } else bSearchFinished = TRUE; //Terminate Search } }
FindClose(hSearch); } |
使用FindFirstFile和FindNextFile查找某个目录下的所有文件
最新推荐文章于 2025-12-07 20:15:00 发布
本文介绍了一个使用FindFirstFile和FindNextFile函数递归地获取指定目录及其子目录下所有文件名的方法。通过递归调用,该方法可以将所有文件名存储到一个足够大的缓冲区中。
部署运行你感兴趣的模型镜像
您可能感兴趣的与本文相关的镜像
EmotiVoice
AI应用
EmotiVoice是由网易有道AI算法团队开源的一块国产TTS语音合成引擎,支持中英文双语,包含2000多种不同的音色,以及特色的情感合成功能,支持合成包含快乐、兴奋、悲伤、愤怒等广泛情感的语音。
5393

被折叠的 条评论
为什么被折叠?



