获取文件夹中所有文件路径以及指定格式文件路径(c++)

mac2026-01-23  6

针对网上代码稍微有些bug的问题又自己写了写试着好像没问题... 毕竟确实把电脑里的所有小视频都搜出来了... 若获取指定文件路径,如设定format="jpg"等等... 若获取所有文件路径,设定format=""即可... 稍微改改即可搜索指定名称文件夹及文件... #include<iostream> #include<string> #include<vector> #include<io.h> #include<cstring> using namespace std; void get_file_list_format(string main_path,vector<string> &file_list,string format) { intptr_t handle;//句柄 _finddata_t file_info;//文件信息 string search_path;//搜索路径 string ans_path;//结果路径 //筛选出直接下级文件中的符合者 if((handle=_findfirst(search_path.assign(main_path).append("*.*"+format).c_str(),&file_info))!=-1) { do { if(strcmp(file_info.name,".")&&strcmp(file_info.name,".."))//有效文件 { //可添加指定搜索文件名 file_list.push_back(ans_path.assign(main_path).append(file_info.name)); } } while(!_findnext(handle,&file_info)); } //继续筛选下级文件夹 if((handle=_findfirst(search_path.assign(main_path).append("*.*").c_str(),&file_info))!=-1) { do { if(file_info.attrib&_A_SUBDIR)//有子文件 { if(strcmp(file_info.name,".")&&strcmp(file_info.name,".."))//有效文件 { //可添加指定搜索文件夹名 // if(!strcmp(file_info.name,"Startup")) file_list.push_back(ans_path.assign(main_path).append(file_info.name));//须隐去24行代码 get_file_list_format(search_path.assign(main_path).append(file_info.name).append("\\"),file_list,format);//搜索下一层 } } } while(!_findnext(handle,&file_info)); } _findclose(handle);//关闭句柄 } int main() { string main_path="C:\\Users\\"; string format=""; vector<string> file_list; get_file_list_format(main_path,file_list,format); for(auto s:file_list) cout<<s<<endl; return 0; }
最新回复(0)