VC++之 遍歷目錄

遍歷文件夾

void EnumerateFiles(CStringArray &strArray)
{
	WIN32_FIND_DATA fd;
	HANDLE hFind = ::FindFirstFile(_T("*.*"), &fd);
	
	if (hFind != INVALID_HANDLE_VALUE)
	{
		do 
		{
			// 如果爲目錄
			if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
			{
				// 如果不爲當前目錄.或上一層目錄..
				if (_tcscmp(fd.cFileName, _T(".")) && _tcscmp(fd.cFileName, _T("..")))
				{
					::SetCurrentDirectory(fd.cFileName);    // 進入該目錄
					EnumerateFiles(strArray);               // 遞歸枚舉
					::SetCurrentDirectory(_T(".."));        // 返回該目錄上一層目錄
				}
			}
			// 如果爲文件
			else
			{
				CString strDir;
				TCHAR   lpDir[MAX_PATH];
	
				::GetCurrentDirectory(MAX_PATH, lpDir);
				strDir = lpDir;
				if ( strDir.Right(1) != _T("\\") )
				{
					strDir += _T("\\");
				}
				strDir += fd.cFileName;
	
				strArray.Add(strDir);
			}
		} while (::FindNextFile(hFind, &fd));
	
		::FindClose(hFind);
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章