遍历路径下的所有文件和文件夹(包括子目录里的文件以及文件夹)

遍历路径下的所有文件和文件夹(包括子目录里的文件以及文件夹),采用递归的遍历方式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
{ 
    否则是什么操作
}

猜你喜欢

转载自blog.csdn.net/u012456019/article/details/80604007