前面我给出了windows下面指定文件夹下面指定类型文件的遍历程序,这里,再给出遍历指定文件夹下的所有子文件夹的程序:
#include "stdafx.h"#include <Windows.h>#include <vector>#include <string>#include "iostream"using namespace std;
int GetSubFolders(string& folder, vector<string>& subFolders ){ subFolders.clear(); WIN32_FIND_DATAA fileFindData; string nameWC = folder + "//*"; HANDLE hFind = ::FindFirstFileA(nameWC.c_str(), &fileFindData); if (hFind == INVALID_HANDLE_VALUE) { cout<<"folder path error...."<<endl; system("pause"); return 0; } do { if (fileFindData.cFileName[0] == '.') { continue; // filter the '..' and '.' in the path } if (fileFindData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY) { subFolders.push_back(folder+"//"+fileFindData.cFileName); } } while (::FindNextFileA(hFind, &fileFindData));
FindClose(hFind);
return (int)subFolders.size();}
int _tmain(int argc, _TCHAR* argv[]){ string folder = "c://OpenCV"; vector<string> subDir;
int count = GetSubFolders(folder, subDir); cout<<"count = "<<count<<endl; for (int i=0; i<count; i++) { cout<<subDir[i].c_str()<<endl; }
system("pause"); return 0;}