C语言Win32 API目录遍历

#include "stdafx.h"
#include "windows.h"

bool listPath(wchar_t *lpszPath);

int _tmain(int argc, _TCHAR* argv[]) {
	listPath(_T("Directory here"));
	return 0;
}

bool listPath(wchar_t *lpszPath) {
	wchar_t szFilePath[MAX_PATH];		/* 遍历路径(正则表达式*.*) */
	wchar_t szAllPath[MAX_PATH];		/* 存储具体文件的绝对路径 */
	WIN32_FIND_DATA fdFileData;	        /* 存储文件数据 */
	HANDLE hFindFile;					/* 文件句柄 */

	wsprintf(szFilePath,				         
		_T("%s%s"), lpszPath, _T("\\*.*"));				
	if((hFindFile = FindFirstFile(szFilePath, &fdFileData))
		== INVALID_HANDLE_VALUE) {
		printf("Find file failed, Error code:%d\n", GetLastError());
		return false;
	}
	do {
		wsprintf(szAllPath, 
			_T("%s\\%s"), lpszPath, fdFileData.cFileName);
		if(!lstrcmp(fdFileData.cFileName, _T("."))) /* 找到的为当前目录. */
			continue;
		if(!lstrcmp(fdFileData.cFileName, _T("..")))/* 找到的为父目录.. */
			continue;
		wprintf(_T("%s\\%s\n"), lpszPath, fdFileData.cFileName);
		//if(fdFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)
			//printf("<hidden>\n");
		if(fdFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
			//printf("<dir>\n");
			listPath(szAllPath);
		}
		printf("\n");
	}while(FindNextFile(hFindFile, &fdFileData));
	FindClose(hFindFile);
	return true;
}

 参考页面:http://huangws138.blog.163.com/blog/static/58790621201142843432632/

你可能感兴趣的:(Win32,api,list)