用FindFirstFile和FindNextFile遍历一个文件夹
来源:互联网 发布:网络直播公司简介 编辑:程序博客网 时间:2024/05/16 14:19
今天在给美术做工具删除冗余texture时,发现对于遍历文件夹的API很不熟悉,特此记录下2个比较常用的API。
WINDOWS下函数原型:
WINBASEAPI__outHANDLEWINAPIFindFirstFileA( __in LPCSTR lpFileName, __out LPWIN32_FIND_DATAA lpFindFileData );WINBASEAPI__outHANDLEWINAPIFindFirstFileW( __in LPCWSTR lpFileName, __out LPWIN32_FIND_DATAW lpFindFileData );#ifdef UNICODE#define FindFirstFile FindFirstFileW#else#define FindFirstFile FindFirstFileA#endif // !UNICODEWINBASEAPIBOOLWINAPIFindNextFileA( __in HANDLE hFindFile, __out LPWIN32_FIND_DATAA lpFindFileData );WINBASEAPIBOOLWINAPIFindNextFileW( __in HANDLE hFindFile, __out LPWIN32_FIND_DATAW lpFindFileData );#ifdef UNICODE#define FindNextFile FindNextFileW#else#define FindNextFile FindNextFileA
#endif
需要注意的地方是最先搜索到的会是"."和".."。第一个是当前目录,第二个是上一层目录。如果需要遍历文件,我们需要把这俩个目录过滤掉。一个遍历目录下所有文件的函数大致如下:
typedef std::vector< std::string> FileVec;FileVec fileList;void Findfile(const TCHAR* path, FileVec& filelist){TCHAR tmp[MAX_PATH];WIN32_FIND_DATA fileData;_tcscpy_s(tmp, MAX_PATH, path);_tcscat_s(tmp, MAX_PATH, _T("//*")); // 通配所有文件HANDLE h = FindFirstFile(tmp, &fileData);if( h == INVALID_HANDLE_VALUE){// To do somethingreturn ;}while ( TRUE ){if( fileData.cFileName[0] != '.' ){// 不是当前路径和父路径的快捷方式if( fileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY ){// 如果该文件是一个普通目录// 如果要继续遍历该目录_tcscpy_s(tmp, MAX_PATH, path); <span style="white-space:pre"></span>_tcscat_s(tmp, _T("/"));_tcscat_s(tmp, MAX_PATH, fileData.cFileName); // 子目录路径Findfile(tmp, filelist);}filelist.push_back( std::string(fileData.cFileName) );}// 如果是当前目录,父目录快捷方式,或者是一个普通文件,继续寻找下一个文件if( 0 == FindNextFile(h, &fileData) ){break;}}}
0 0
- 用FindFirstFile和FindNextFile遍历一个文件夹
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 使用FindFirstFile,FindNextFile遍历一个文件夹
- 利用FindFirstFile和FindNextFile查找文件或遍历文件夹
- FindFirstFile和FindNextFile
- FindFirstFile和FindNextFile函数
- FindFirstFile、FindNextFile和FindClose
- FindFirstFile() 和findnextfile()
- FindFirstFile和FindNextFile函数
- 遍历目录 常用FindFirstFile()和FindNextFile()
- FindFirstFile和FindNextFile的用法
- FindFirstFile和FindNextFile的使用
- FindFirstFile和FindNextFile的用法
- FindFirstFile 和FindNextFile的用法
- 2-05. 求集合数据的均方差(15) (数学啊 ZJU_PAT)
- 画了个Android——Canvas类的使用
- 我的第一个C#程序:从多个文本文件中读取数据到SqlServer并实现增删改查
- HOG 梯度方向直方图
- Android Art模式下openDexFile的调用
- 用FindFirstFile和FindNextFile遍历一个文件夹
- 用算法求N(N>=3)之内素数的个数
- Unity AssetBundle爬坑手记
- MySQL Migration Toolkit的使用
- AsyncTasLoader不进行加载操作的原因及解决方法
- 下列函数的结果
- solr SolrServer
- 在Mac OS平台使用VNC连接树莓派
- 杂碎的编程体会