注:本文讨论的是怎么用Windows API遍历目录下的所有文件。除Windows API,还有一种Windows/Linux通用的方式,使用。
WIN32_FIND_DATA结构
遍历目录下的文件需要用到WIN32_FIND_DATA结构。实际上有两种结构:WIN32_FIND_DATAA和WIN32_FIND_DATAW。A和W分别代表ASCII和宽字符(Unicode)。定义UNICODE宏时,WIN32_FIND_DATA指WIN32_FIND_DATAW;否则指WIN32_FIND_DATAA。
下面是两个结构的定义(minwinbase.h,VS2015):
typedef struct_WIN32_FIND_DATAA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
_Field_z_ CHAR cFileName[ MAX_PATH ];
_Field_z_ CHAR cAlternateFileName[14];
#ifdef _MAC
DWORD dwFileType;
DWORD dwCreatorType;
WORD wFinderFlags;#endif} WIN32_FIND_DATAA;
typedefstruct_WIN32_FIND_DATAW {
DWOR