VC++遍历目录包括子目录下文件

遍历所有文件


void GetFilePath(vector<CString>& vFilePathList, CString strDir)
{
	CFileFind finder;
	BOOL isNotEmpty = finder.FindFile(strDir + _T("*"));//总文件夹,开始遍历 
	while (isNotEmpty)
	{
		isNotEmpty = finder.FindNextFile();//查找文件 
		CString filename = finder.GetFilePath();//获取文件的路径,可能是文件夹,可能是文件 
		if (!(finder.IsDirectory()))
		{
			//如果是文件则加入文件列表 

				vFilePathList.push_back(filename);//将一个文件路径加入容器 

		}
		else
		{
			//递归遍历用户文件夹,跳过非用户文件夹 
			if (!(finder.IsDots() || finder.IsHidden() || finder.IsSystem() || finder.IsTemporary() || finder.IsReadOnly()))
			{
				GetFilePath(vFilePathList, filename + _T("/"));
			}
		}
	}
}

遍历所有txt文件


void GetTxtFilePath(vector<CString>& vFilePathList, CString strDir)
{
	CFileFind finder;
	BOOL isNotEmpty = finder.FindFile(strDir + _T("*"));//总文件夹,开始遍历 
	while (isNotEmpty)
	{
		isNotEmpty = finder.FindNextFile();//查找文件 
		CString filename = finder.GetFilePath();//获取文件的路径,可能是文件夹,可能是文件 
		if (!(finder.IsDirectory()))
		{
			//如果是文件则加入文件列表 
			if (!filename.Right(4).Compare(L".txt")){

				vFilePathList.push_back(filename);//将一个文件路径加入容器 
			}
		}
		else
		{
			//递归遍历用户文件夹,跳过非用户文件夹 
			if (!(finder.IsDots() || finder.IsHidden() || finder.IsSystem() || finder.IsTemporary() || finder.IsReadOnly()))
			{
				GetTxtFilePath(vFilePathList, filename + _T("/"));
			}
		}
	}
}

用法

vector<CString> v;
GetFilePath(v,L"D:\\test\\");

你可能感兴趣的:(mfc/win32,c++,开发语言)