1. 程式人生 > >C++獲取指定路徑下的所有檔案

C++獲取指定路徑下的所有檔案

遞迴獲取資料夾中的所有檔案的完整路徑

#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);
	}
}