遍历路径下的所有文件和文件夹(包括子目录里的文件以及文件夹),采用递归的遍历方式if
#include<io.h>
void getAllFiles(string path, vector<string>& files)
{
//文件句柄
intptr_t hFile = 0;
//文件信息
struct _finddata_t fileinfo; //很少用的文件信息读取结构
string p; //string类很有意思的一个赋值函数:assign(),有很多重载版本
if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo))!= -1)
{
do
{
if ((fileinfo.attrib & _A_SUBDIR)) //判断是否为文件夹
{
if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name));//保存文件夹名字
getAllFiles(p.assign(path).append("\\").append(fileinfo.name), files);//递归当前文件夹
}
}
else //文件处理
{
files.push_back(p.assign(path).append("\\").append(fileinfo.name));//文件名
}
} while (_findnext(hFile, &fileinfo) == 0); //寻找下一个,成功返回0,否则-1
_findclose(hFile);
}
}
判断某个路径(string)是文件还是文件夹
if(GetFileAttributes((某个string).c_str()) == FILE_ATTRIBUTE_DIRECTORYif)
{
如果是文件夹的话什么操作
}
else
{
否则是什么操作
}