现在的位置: 首页 > 综合 > 正文

用API实现遍历文件目录

2013年10月07日 ⁄ 综合 ⁄ 共 1022字 ⁄ 字号 评论关闭
void FindFile(LPTSTR strPath)  //strPath="C:\\a\\"
{
	TCHAR strRoot[MAX_PATH];
	TCHAR strSearchFile[MAX_PATH];
	TCHAR strOut[MAX_PATH];
	WIN32_FIND_DATA fData;

	ZeroMemory(strRoot, sizeof(strRoot));
	ZeroMemory(strSearchFile, sizeof(strSearchFile));
	ZeroMemory(strOut, sizeof(strOut));
	ZeroMemory(&fData, sizeof(WIN32_FIND_DATA));

	lstrcpy(strSearchFile, strPath);
	lstrcat(strSearchFile, _T("*.*"));

	HANDLE hFile = FindFirstFile(strSearchFile, &fData);
	if(hFile == INVALID_HANDLE_VALUE)
		return;
	do
	{
		if(fData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
			&& lstrcmp(fData.cFileName, _T("."))
			&& lstrcmp(fData.cFileName, _T("..")))               //Windows下有2个默认目录"."和".."
		{
			lstrcpy(strRoot, strPath);
			lstrcat(strRoot, fData.cFileName);
			lstrcat(strRoot, _T("\\"));

			FindFile(strRoot);
		}
		else
		{
			if(lstrcmp(fData.cFileName, _T("."))
			&& lstrcmp(fData.cFileName, _T("..")))
			{
				lstrcpy(strOut, strPath);
				lstrcat(strOut, fData.cFileName);
				ListBox_AddString(m_hWnd, strOut);         //输出文件名到ListBox
				ZeroMemory(strOut, sizeof(strOut));
			}
		}
	}while(FindNextFile(hFile, &fData) != 0);

	FindClose(hFile);
	return ;
}

以上代码只是简单实现了遍历目录下的文件。给自己留个记号。以后说不定要用到!

抱歉!评论已关闭.