重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了如何在C++中获取指定目录中的所有文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
目前成都创新互联已为上千余家的企业提供了网站建设、域名、雅安服务器托管、绵阳服务器托管、企业网站设计、景谷网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1.获得指定目录下的所有文件(不搜索子文件夹)
需要包含的头文件
#include#include #include #include
函数实现
void getAllFiles(string path, vector& files) { // 文件句柄 long hFile = 0; // 文件信息 struct _finddata_t fileinfo; string p; if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1) { do { // 保存文件的全路径 files.push_back(p.assign(path).append("\\").append(fileinfo.name)); } while (_findnext(hFile, &fileinfo) == 0); //寻找下一个,成功返回0,否则-1 _findclose(hFile); } }
2.获取指定目录下的所有文件(搜索子文件夹)
void getAllFiles(string path, vector& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; 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); } }
3.获取指定格式的文件(不搜索子文件夹)
/* path: 指定目录 files: 保存结果 fileType: 指定的文件格式,如 .jpg */ void getAllFiles(string path, vector& files,string fileType) { // 文件句柄 long hFile = 0; // 文件信息 struct _finddata_t fileinfo; string p; if ((hFile = _findfirst(p.assign(path).append("\\*" + fileType).c_str(), &fileinfo)) != -1) { do { // 保存文件的全路径 files.push_back(p.assign(path).append("\\").append(fileinfo.name)); } while (_findnext(hFile, &fileinfo) == 0); //寻找下一个,成功返回0,否则-1 _findclose(hFile); } }
4.测试
int main(int argc, char** argv) { vectortemp; getAllFiles("J:\\faces\\test", temp,".jpg"); for (int i = 0; i < temp.size();++i ) { cout << temp[i] << endl; } return 0; }
上述内容就是如何在C++中获取指定目录中的所有文件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。