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)) {
    		// 处理其它文件
    	}
    }
    
  • 相关阅读:
    N-Queens
    Pow(x, n)
    Maximum Subarray
    Spiral Matrix
    Jump Game
    Merge Intervals
    Insert Interval
    Length of Last Word
    Spiral Matrix II
    Amazon 面经
  • 原文地址:https://www.cnblogs.com/Rhein-E/p/14156411.html
Copyright © 2011-2022 走看看