• 实现:递归遍历目录


    #include<stdio.h>
    #include<windows.h>
    
    DWORD EnumerateFileInDirectory(LPCWSTR szPath){
    	WIN32_FIND_DATA FindFileData;
    	HANDLE hListFile;
    	wchar_t szFilePath[MAX_PATH];
    	wchar_t szFullPath[MAX_PATH]; //绝对路径
    
    	lstrcpy(szFilePath, szPath);
    	lstrcat(szFilePath, L"\*");
    
    	hListFile = FindFirstFile(szFilePath, &FindFileData);
    	if(hListFile == INVALID_HANDLE_VALUE){
    		printf("错误:%d 
    ", GetLastError());
    		return 1;
    	}else {
    		do {
    			if (lstrcmp(FindFileData.cFileName, L".") == 0 || lstrcmp(FindFileData.cFileName, L"..") == 0){
    				continue;
    			}
    
    
    			wsprintf(szFullPath, L"%ls\%ls", szPath, FindFileData.cFileName);
    			//printf("%ls\%ls", szPath, FindFileData.cFileName);
    			printf("
    %ls	", szFullPath);
    			//if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) { //判断文件的属性是否为隐藏,如果是的话 输出个前缀为HIDDEN
    			//	printf("<HIDDEN> ");
    			//}
    			if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { //判断是否是目录,如果是的话 输出个前缀为DIR
    				printf("	<DIR>");
    				EnumerateFileInDirectory(szFullPath);
    			}
    			
    			if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_ARCHIVE) {
    				printf("	<FILE>");
    			}
    
    			//printf("
    ");
    
    		} while (FindNextFile(hListFile, &FindFileData));
    	}
    	printf("
    ");
    	return 0;
    }
    
    
    
    int main() {
    	/*
    	 * API
    	 * FindFirstFile
    	 * FindNextFile
    	 * WIN32_FIND_DATA
    	*/
    	EnumerateFileInDirectory(L"C:\Users\dell\source\repos\msgboxtest");
    	system("pause");
    	return 0;
    }
    

    结果如下:

  • 相关阅读:
    socat + kata + cgroup
    2018-8-10-卷积神经网络全面解析
    2019-8-31-PowerShell-通过-WMI-获取系统服务
    2019-8-31-PowerShell-通过-WMI-获取系统服务
    2018-2-13-不使用数据结构反转栈
    统计难题
    Keywords Search
    [JSOI2008]最大数
    Android(java)学习笔记1:多线程的引入
    欢迎使用CSDN-markdown编辑器
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11982595.html
Copyright © 2020-2023  润新知