admin 发表于 2020-3-4 21:04:15

获取一个文件夹下所有指定类型的文件名


#include <string>
#include <io.h>
#include <vector>
#include <iostream>
#include <fstream>
using namespace std;

       
/************************************************************************/
/*获取文件夹下所有文件名
    输入:   
      path    :   文件夹路径
      exd   :   所要获取的文件名后缀,如jpg、png等;如果希望获取所有
                  文件名, exd = ".jt"
    输出:
      files   :   获取的文件名列表 含有路径
*/
/************************************************************************/

void CONFIG_getFiles( string path, string exd, vector<string>& files )
{
        //文件句柄
    long   hFile   =   0;
    //文件信息
    struct _finddata_t fileinfo;
    string pathName, exdName;

   string p;
        if((hFile = _findfirst(pathName.assign(path).append("\\*").c_str(),&fileinfo)) !=-1)
    {
      do
      {
            //如果是文件夹中仍有文件夹,迭代之
            //如果不是,加入列表
            // 不推荐使用,硬要使用的话,需要修改else 里面的语句
         if((fileinfo.attrib &_A_SUBDIR))
            {
                               
            if(strcmp(fileinfo.name,".") != 0&&strcmp(fileinfo.name,"..") != 0)
                           CONFIG_getFiles( pathName.assign(path).append("\\").append(fileinfo.name), exd, files );

            }
            else
            {
                                if (strstr(fileinfo.name,exd.c_str()))
                                {
                                       files.push_back(pathName.assign(path).append("\\").append(fileinfo.name)); // 要得到绝对目录使用该语句
                                }

                  //如果使用
                  //files.push_back(fileinfo.name); // 只要得到文件名字使用该语句
            }
      }while(_findnext(hFile, &fileinfo)== 0);
      _findclose(hFile);
    }
}

页: [1]
查看完整版本: 获取一个文件夹下所有指定类型的文件名