zoukankan      html  css  js  c++  java
  • [Win32 API] FindFirstFile()和FindNextFile()

    [Win32 API] FindFirstFile()和FindNextFile()

    FindFirstFile()

    用法:

    HANDLE FindFirstFile(
    	LPCSTR lpFileName,
    	LPWIN32_FIND_DATA lpFindFileData);
    

    该函数查找符合条件的第一个文件
    第一个参数类型常量字符串,表示要查找的文件名
    第二个参数类型LPWIN32_FIND_DATA,找到的文件信息将储存在它指向的WIN32_FIND_DATA结构体中
    WIN32_FIND_DATA长这样:

    typedef struct _WIN32_FIND_DATAA {
    	DWORD		dwFileAttributes;		// 文件属性
    	FILETIME 	ftCreationTime;			// 创建时间
    	FILETIME 	ftLastAccessTime;		// 最后一次访问的时间
    	FILETIME 	ftLastWriteTime;		// 最后一次写入的时间
    	DWORD		nFileSizeHigh;			// 文件大小(高位)
    	DWORD		nFileSizeLow;			// 文件大小(低位)
    	DWORD		dwReserved0;			// 和第一个成员有关
    	DWORD		dwReserved1;				
    	CHAR		cFileName[MAX_PATH];	// 文件名
    	CHAR		cAlternateFileName[14];	// 8.3格式文件名
    	DWORD		dwFileType;				// 文件类型
    	DWORD		dwCreatorType;			
    	WORD		wFinderFlags;			
    } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
    
    _WIN32_FIND_DATAW类似
    

    返回值类型是HANDLE,用于FindNextFile()
    如果该值等于INVALID_HANDLE_VALUE,表示没找到目标文件
    注意文件名可以包含通配符'?'和'*'

    FindNextFile()

    用法:

    BOOL FindNextFile(
    	HANDLE hFindFile,
    	LPWIN32_FIND_DATA lpFindFileData
    );
    

    该函数查找下一个目标文件,需和FindFirstFile()配合使用
    第一个参数是FindFirstFile()返回的句柄
    第二个参数用来储存找到的文件的信息
    如果找到了目标文件,返回True,否则返回False

    示例:遍历当前文件夹下的文件及文件夹

    WIN32_FIND_DATA fdFile;
    HANDLE hFile = FindFirstFile(L"*.*", &fdFile);
    if (hFile == INVALID_HANDLE_VALUE) {
    	// 没找到
    } else {
    	// 处理第一个文件
    	while (FindNextFile(hFile, &fdFile)) {
    		// 处理其它文件
    	}
    }
    
  • 相关阅读:
    POJ 2018 二分
    873. Length of Longest Fibonacci Subsequence
    847. Shortest Path Visiting All Nodes
    838. Push Dominoes
    813. Largest Sum of Averages
    801. Minimum Swaps To Make Sequences Increasing
    790. Domino and Tromino Tiling
    764. Largest Plus Sign
    Weekly Contest 128
    746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/Rhein-E/p/14156411.html
Copyright © 2011-2022 走看看