C++ 获得指定目录下的所有文件

头文件:#include #include #include #include

//获得指定目录下的所有文件(不搜索子文件夹)/path: 指定目录files: 保存结果/voidGetAllFiles(stringpath,vector&files){ longhFile= 0;// 文件句柄 struct_finddata_tfileinfo;// 文件信息 stringsFile;//文件名(绝对路径) if((hFile=_findfirst(sFile.assign(path).append(“\“).c_str(), &fileinfo)) != -1)//第一次查找 { do { if(!(fileinfo.attrib&_A_SUBDIR)) files.push_back(sFile.assign(path).append(“\“).append(fileinfo.name));//添加文件的全路径 } while(0 ==_findnext(hFile, &fileinfo)); //寻找下一个,成功返回0,否则-1 _findclose(hFile); }}//获取指定格式的文件(不搜索子文件夹)/path: 指定目录fileType: 指定的文件格式,如 .jpgfiles: 保存结果/voidGetAllFilesBySuffix(stringpath,stringfileType,vector&files){ longhFile= 0;// 文件句柄 struct_finddata_tfileinfo;// 文件信息 stringsFile;//文件名(绝对路径) if((hFile=_findfirst(sFile.assign(path).append(“\“+fileType).c_str(), &fileinfo)) != -1)//第一次查找 { do { if(!(fileinfo.attrib&_A_SUBDIR))//非子目录 files.push_back(sFile.assign(path).append(“\“).append(fileinfo.name));//添加文件的全路径 } while(0 ==_findnext(hFile, &fileinfo)); //寻找下一个,成功返回0,否则-1 _findclose(hFile); }}//获取指定目录下的所有文件(递归搜索子文件夹)/path: 指定目录files: 保存结果/voidGetAllFilesRecursive(stringpath,vector&files){ longhFile= 0;//文件句柄 struct_finddata_tfileinfo;//文件信息 stringsFile;//文件名(绝对路径) if((hFile=_findfirst(sFile.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(sFile.assign(path).append(“\“).append(fileinfo.name));//添加子目录的全路径 //递归搜索 GetAllFilesRecursive(sFile.assign(path).append(“\“).append(fileinfo.name),files); } } else//如果查找到的是文件 { files.push_back(sFile.assign(path).append(“\“).append(fileinfo.name));//添加文件的全路径 } } while(_findnext(hFile, &fileinfo) == 0); //寻找下一个,成功返回0,否则-1 _findclose(hFile); }}