MFC递归扫描指定文件夹下的所有文件包括子文件夹下的文件。

时间:2020-12-29 09:57:16

函数名: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);
	    }

	}
}