• [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)) {
    		// 处理其它文件
    	}
    }
    
  • 相关阅读:
    概率与数学期望初步
    $Luogu$ $P4316$ 绿豆蛙的归宿(附期望 $dp$ 的设计总结)
    $Luogu$ $P4427$ $[BJOI2018]$ 求和
    $SP3978$ $DISQUERY$ $-$ $Distance$ $Query$
    最近公共祖先模板(未完待续)
    $Luogu$ $P3052$ $[USACO12MAR]$ 摩天大楼里的奶牛 $Cows$ $in$ $a$ $Skyscraper$
    $Luogu$ $P2622$ 关灯问题 $mathrm{II}$
    [转载] $CF633F$ 题解
    [转载] $Luogu$ $P3933$ 题解
    2020高考回忆录(随便写写
  • 原文地址:https://www.cnblogs.com/Rhein-E/p/14156411.html
Copyright © 2020-2023  润新知