有点麻烦:
#include <iostream> #include "windows.h" #include <string.h> #include <Strsafe.h> using namespace std; //传入要遍历的文件夹路径,并遍历相应文件夹 void processPath(const wchar_t Dir) { WIN32_FIND_DATA FindFileData; HANDLE hFind=INVALID_HANDLE_VALUE; wchar_t DirSpec[MAX_PATH]; StringCchCopy(DirSpec,MAX_PATH,Dir); StringCchCat(DirSpec,MAX_PATH,TEXT("\\*")); hFind=FindFirstFile(DirSpec,&FindFileData); if (hFind==INVALID_HANDLE_VALUE) { FindClose(hFind); return; } while (FindNextFile(hFind,&FindFileData) != 0) { //文件,直接处理 if((FindFileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) ==0) { //processFile() } //特殊目录,不处理。 if ( wcscmp(FindFileData.cFileName,L"." )==0 || wcscmp(FindFileData.cFileName,L"..")==0) { continue; } //目录,递归处理 wchar_t DirAdd[MAX_PATH]; StringCchCopy(DirAdd,MAX_PATH,Dir); StringCchCat(DirAdd,MAX_PATH,TEXT("\\")); StringCchCat(DirAdd,MAX_PATH,FindFileData.cFileName); processPath(DirAdd); } FindClose(hFind); } int _tmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] ) { locale loc( "chs" ); //支持中文输出,否则wchar可能无法输出值为中文的变量 wcout.imbue( loc ); processPath(L"D:\\Test"); //遍历指定的文件夹,此处文件路径可按具体情况修改 system("pause"); return 0; }
有的朋友问,如果要使用char怎么办?
这个也简单, FindFirstFileA(),在看看参数差异。