C++獲取指定路徑下的所有檔案
阿新 • • 發佈:2019-02-16
遞迴獲取資料夾中的所有檔案的完整路徑
#include <io.h> #include <iostream> #include <vector> using namespace std; void getFiles(string path, vector<string>& 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) getFiles(p.assign(path).append("\\").append(fileinfo.name), files); } //如果不是,加入列表 else { files.push_back(p.assign(path).append("\\").append(fileinfo.name)); } } while (_findnext(hFile, &fileinfo) == 0); //_findclose函式結束查詢 _findclose(hFile); } }