先来说微软的数据结构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 ];
} WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
好了定义说完了,开始说如何使用这个定义了
FindFirstFile 根据文件名查找文件
HANDLE FindFirstFile(
LPCTSTR lpFileName,//filename
LPWIN32_FIND_DATA lpFindFileData//databuffer
);
返回值为一个句柄 HANDLE,当调用失败时将返回INVALID_HANDLE_VALUE,也就是-1
参数:
1.LPCTSTR lpFileName 要查找的文件
2.LPWIN32_FIND_DATA lpFindFileData 用于保存查到文件的属性
FindNextFile 查找下一个文件
BOOL FindNextFile(
HANDLE hFindFile, //searchhandle
LPWIN32_FIND_DATA lpFindFileData //databuffer
);
返回值为真或假,如不再有与指定条件相符的文件,会将GetLastError设置成ERROR_NO_MORE_FILES
参数:
1.HANDLE hFindFile 由FindFristFile产生的一个句柄
2.用于保存找到的下一个文件的属性
还要说明的是文件的属性有如下:
#define FILE_ATTRIBUTE_READONLY 0x00000001 //只读
#define FILE_ATTRIBUTE_HIDDEN 0x00000002 //隐藏
#define FILE_ATTRIBUTE_SYSTEM 0x00000004 //系统文件
#define FILE_ATTRIBUTE_DIRECTOR