源码:
#include <iostream>
#include <io.h>
#include <vector>
#include <string>void getFiles1(std::string path, std::vector<std::string>& files)
{//文件句柄 //long hFile = 0; //win7 intptr_t hFile = 0; //win10//文件信息 struct _finddata_t fileinfo;std::string p;// "\\*"是指读取文件夹下的所有类型的文件,若想读取特定类型的文件,以png为例,则用“\\*.png”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)getFiles1(p.assign(path).append("\\").append(fileinfo.name), files);}else{files.push_back(path + "\\" + fileinfo.name);}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}
}void getFiles2(std::string path, std::vector<std::string>& files, std::vector<std::string> &ownname)
{intptr_t hFile = 0;//文件信息 struct _finddata_t fileinfo;std::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)getFiles2(p.assign(path).append("\\").append(fileinfo.name), files, ownname);}else{files.push_back(path + "\\" + fileinfo.name);ownname.push_back(fileinfo.name);}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}
}int main()
{//主函数std::string filePath = "sample";std::vector<std::string> files;std::vector<std::string> ownName;//vector<string> filesname; //获取该路径下的所有文件路径 getFiles2(filePath, files, ownName); //获取该路径下的所有文件路径和文件名char str[30];for (int i = 0; i < files.size(); i++){std::cout << files[i].c_str() << std::endl;std::cout << ownName[i] << std::endl;}return 0;
}
运行示例:
