本文實例為大家分享了C++獲取指定目錄下所有文件的具體代碼,供大家參考,具體內容如下
1.獲得指定目錄下的所有文件(不搜索子文件夾)
需要包含的頭文件
#include <io.h>#include <string>#include <vector>#include <fstream>
函數實現
void getAllFiles(string path, vector<string>& files) { // 文件句柄 long hFile = 0; // 文件信息 struct _finddata_t fileinfo; string p; if ((hFile = _findfirst(p.assign(path).append("http://*").c_str(), &fileinfo)) != -1) { do { // 保存文件的全路徑 files.push_back(p.assign(path).append("http://").append(fileinfo.name)); } while (_findnext(hFile, &fileinfo) == 0); //尋找下一個,成功返回0,否則-1 _findclose(hFile); }}
2.獲取指定目錄下的所有文件(搜索子文件夾)
void getAllFiles(string path, vector<string>& files) { //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; string p; if ((hFile = _findfirst(p.assign(path).append("http://*").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("http://").append(fileinfo.name)); //遞歸搜索 getAllFiles(p.assign(path).append("http://").append(fileinfo.name), files); } } else { files.push_back(p.assign(path).append("http://").append(fileinfo.name)); } } while (_findnext(hFile, &fileinfo) == 0); //尋找下一個,成功返回0,否則-1 _findclose(hFile); }}
3.獲取指定格式的文件(不搜索子文件夾)
/*path: 指定目錄files: 保存結果fileType: 指定的文件格式,如 .jpg*/void getAllFiles(string path, vector<string>& files,string fileType) { // 文件句柄 long hFile = 0; // 文件信息 struct _finddata_t fileinfo; string p; if ((hFile = _findfirst(p.assign(path).append("http://*" + fileType).c_str(), &fileinfo)) != -1) { do { // 保存文件的全路徑 files.push_back(p.assign(path).append("http://").append(fileinfo.name)); } while (_findnext(hFile, &fileinfo) == 0); //尋找下一個,成功返回0,否則-1 _findclose(hFile); }}
4.測試
int main(int argc, char** argv){ vector<string> temp; getAllFiles("J://faces//test", temp,".jpg"); for (int i = 0; i < temp.size();++i ) { cout << temp[i] << endl; } return 0;}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答
圖片精選