_findfirst, _wfindfirst
提供有关与 filespec 参数中指定的文件文件名的第一个实例的信息。
intptr_t _findfirst(
const char *filespec,
struct _finddata_t *fileinfo
);
intptr_t _findfirst32(
const char *filespec,
struct _finddata32_t *fileinfo
);
intptr_t _findfirst64(
const char *filespec,
struct _finddata64_t *fileinfo
);
intptr_t _findfirsti64(
const char *filespec,
struct _finddatai64_t *fileinfo
);
intptr_t _findfirst32i64(
const char *filespec,
struct _finddata32i64_t *fileinfo
);
intptr_t _findfirst64i32(
const char *filespec,
struct _finddata64i32_t *fileinfo
);
intptr_t _wfindfirst(
const wchar_t *filespec,
struct _wfinddata_t *fileinfo
);
intptr_t _wfindfirst32(
const wchar_t *filespec,
struct _wfinddata32_t *fileinfo
);
intptr_t _wfindfirst64(
const wchar_t *filespec,
struct _wfinddata64_t *fileinfo
);
intptr_t _wfindfirsti64(
const wchar_t *filespec,
struct _wfinddatai64_t *fileinfo
);
intptr_t _wfindfirst32i64(
const wchar_t *filespec,
struct _wfinddata32i64_t *fileinfo
);
intptr_t _wfindfirst64i32(
const wchar_t *filespec,
struct _wfinddata64i32_t *fileinfo
);
参数
filespec
目标文件规范 (可以包括通配符)。fileinfo
文件信息缓冲区。
返回值
如果成功, _findfirst 返回确定该文件的一个搜索句柄或与 filespec 规范,可用于文件组的后续调用 _findnext 或为 _findclose。 否则, _findfirst 返回 – 1 并将 errno 为下列值之一。
EINVAL
无效参数: filespec 或 fileinfo 是 NULL。 或者,操作系统会返回意外的错误。ENOENT
不能匹配的文件规范。ENOMEM
内存不足。EINVAL
无效文件名指定或退出的文件名大于 MAX_PATH。
有关这些属性和其他的更多信息返回代码示例,请参见 _doserrno、 errno、 _sys_errlist 和 _sys_nerr。
如果一个传递的参数无效,这些函数调用的参数无效处理程序,如 参数验证所述。
备注
必须调用 _findclose ,在使用完毕后 _findfirst 或 _findnext 函数后 (或任何变量)。 这将释放这些功能使用的资源在应用程序。
具有 w 标题这些功能的变化是宽字符版本;否则,它们与对应的单字节功能是相同的。
这些功能的变体支持 32 位或 64 位时类型和 32 位或 64 位文件大小。 第一个数字后缀 (32 或 64) 指示时类型的大小;第二后缀是 i32 或 i64,并指示文件大小是否表示为 32 位或 64 位整数。 有关哪些信息版本支持 32 位和 64 位时间类型以及文件大小,请参见下表。 i32 或 i64 后缀省略,如果它与时间类型的范围,因此, _findfirst64 还支持 64 位文件长度,并 _findfirst32 仅支持 32 位文件长度。
这些功能为 fileinfo 参数使用多种多样 _finddata_t 结构。 有关结构的更多信息,请参见 _find, _wfind功能。
使用 64 位时类型的变体使文件创建日期。 23:59 表示: 59, 3000 年十二月 31 日,, UTC。 使用 32 位时类型的那些下午 19:14 仅表示日期: 一月 07 日 18 日 2038 中, UTC。 午夜, 1970 年一月 1 日,是日期范围的下限所有这些功能。
除非您具有特定原因需要使用显式指定时间范围的版本中,使用 _findfirst 或 _wfindfirst ,或者,如果需要支持文件大小超过 3 GB,使用 _findfirsti64 或 _wfindfirsti64。 所有这些函数使用 64 位时类型。 在早期版本中,这些函数使用了 32 位时类型。 如果这是应用程序的重大更改,可以定义 _USE_32BIT_TIME_T 还原为旧行为。 如果 _USE_32BIT_TIME_T 定义, _findfirst、 _finfirsti64及其对应的 Unicode 版本使用 32 位时间。
超时 _findfirst 的类型和长度文件类型变体
函数 |
_USE_32BIT_TIME_T 定义? |
时间类型 |
文件长度类型 |
---|---|---|---|
_findfirst, _wfindfirst |
未定义 |
64 位 |
32 位 |
_findfirst, _wfindfirst |
已定义 |
32 位 |
32 位 |
_findfirst32, _wfindfirst32 |
不影响由宏定义 |
32 位 |
32 位 |
_findfirst64, _wfindfirst64 |
不影响由宏定义 |
64 位 |
64 位 |
_findfirsti64, _wfindfirsti64 |
未定义 |
64 位 |
64 位 |
_findfirsti64, _wfindfirsti64 |
已定义 |
32 位 |
64 位 |
_findfirst32i64, _wfindfirst32i64 |
不影响由宏定义 |
32 位 |
64 位 |
_findfirst64i32, _wfindfirst64i32 |
不影响由宏定义 |
64 位 |
32 位 |
一般文本例程映射
Tchar.h 实例 |
未定义的 _UNICODE 和 _MBCS |
定义的 _MBCS |
定义的 _UNICODE |
---|---|---|---|
_tfindfirst |
_findfirst |
_findfirst |
_wfindfirst |
_tfindfirst32 |
_findfirst32 |
_findfirst32 |
_wfindfirst32 |
_tfindfirst64 |
_findfirst64 |
_findfirst64 |
_wfindfirst64 |
_tfindfirsti64 |
_findfirsti64 |
_findfirsti64 |
_wfindfirsti64 |
_tfindfirst32i64 |
_findfirst32i64 |
_findfirst32i64 |
_wfindfirst32i64 |
_tfindfirst64i32 |
_findfirst64i32 |
_findfirst64i32 |
_wfindfirst64i32 |
要求
功能 |
必需的头 |
---|---|
_findfirst |
io.h |
_findfirst32 |
io.h |
_findfirst64 |
io.h |
_findfirsti64 |
io.h |
_findfirst32i64 |
io.h |
_findfirst64i32 |
io.h |
_wfindfirst |
io.h 或 wchar.h |
_wfindfirst32 |
io.h 或 wchar.h |
_wfindfirst64 |
io.h 或 wchar.h |
_wfindfirsti64 |
io.h 或 wchar.h |
_wfindfirst32i64 |
io.h 或 wchar.h |
_wfindfirst64i32 |
io.h 或 wchar.h |
有关更多兼容性信息,请参见中介绍的 兼容性 。
.NET Framework 等效项
系统:: IO:: DirectoryInfo:: GetFiles