#include <io.h>
#include <string>
#include <list>
#include <cstring>
using namespace std;
void dfsFolder(string folderPath, list<string> &lst)
{
_finddata_t FileInfo;
string strfind = folderPath + "\\*";
long Handle = _findfirst(strfind.c_str(), &FileInfo);
if (Handle == -1L)
{
cerr << "can not match the folder path" << endl;
exit(-1);
}
do {
//判断是否有子目录
if (FileInfo.attrib & _A_SUBDIR)
{
//这个语句很重要
if ((strcmp(FileInfo.name, ".") != 0) && (strcmp(FileInfo.name, "..") != 0))
{
string newPath = folderPath + "\\" + FileInfo.name;
dfsFolder(newPath, lst);
}
}
else
{
lst.push_back(folderPath + "\\" + FileInfo.name);
}
} while (_findnext(Handle, &FileInfo) == 0);
_findclose(Handle);
}