欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言Win32 API目录遍历 博客分类: 随身小记 win32APIlistFindFirstFileFindNextFile

程序员文章站 2024-03-14 16:27:01
...
#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/