1. 程式人生 > >MFC遞迴掃描指定資料夾下的所有檔案包括子資料夾下的檔案。

MFC遞迴掃描指定資料夾下的所有檔案包括子資料夾下的檔案。

函式名:TraverseDir

函式功能:遞迴掃描制定資料夾下所有檔案(包括子資料夾下的檔案)

引數:strDir, vecFiles

    (入口)    strDir  :  用於遞迴掃描的資料夾路徑

    (出口)    vecFiles  :  資料夾下的所有檔名的一個vector

返回值: 無

額外說明:返回的檔名可選擇為是否帶字尾,和是否獲取全路徑

作者:weekdawn


void TraverseDir(const CString& strDir, std::vector<CString>& vecFiles)//strDir為傳入的資料夾路徑,vecFiles為掃描到的檔案集
{
	CFileFind ff;
	//在路徑後面新增\*.*字尾
	if (strDir.Right(1) != "\\")
	    strDir += "\\";
	strDir += "*.*";
	BOOL ret = ff.FindFile(strDir);
	while (ret)
	{
	    ret = ff.FindNextFile();
	    if (ff.IsDirectory() && !ff.IsDots())
	    {
	        CString path = ff.GetFilePath();
	        TraverseDir(path, vecFiles);
	    }
	    else if (!ff.IsDirectory() && !ff.IsDots())
	    {
	        //CString name = ff.GetFileName();//獲取帶字尾的檔名
	        CString name = ff.GetFilePath();//獲取檔案路徑
	        //CString name = ff.GetFileTitle();//獲取不帶字尾的檔名
	        vecFiles.push_back(name);
	    }

	}
}