C++中_finddata_t结构体存储文件信息详解

Struct _finddata_t结构体可以用来处理各种文件的文件信息,使用该结构体需要添加头文件io.h。

它的定义如下所示


对于该结构体中的各个变量的定义如下所示:

unsigned attrib:无符号整形、位表示。它的作用是表示文件的属性,一般来说,文件的属性有如下几种:_A_ARCH(存档)、 _A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、_A_SUBDIR(文件夹)、_A_SYSTEM(系统)

time_t time_create:表示从1970年1月1日0时0分0秒到现在时刻的秒数。

time_t time_access:文件最后一次被访问的时间

time_t time_write:文件最后一次被修改的时间

_fsize_t size:文件的大小。

char name[_MAX_FNAME]:文件的文件名,这里的_MAX_FNAME是一个常量宏,它在头文件中被定义,表示的是文件名的最大长度。

为了使用这个结构体将文件的信息存储到该结构体的内存空间,需要搭配使用_findfirst()、_findnext()、_findclose()三个函数使用。


首先用_findfirst函数查找第一个文件,若成功则用返回的句柄,调用_findnext函数查找其他的文件,当查找文件完成之后,就会用_findclose函数结束查找。

long _findfirst( char *filespec, struct _finddata_t *fileinfo );

hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo))

p.assign(path) 给P赋path的值   后 连接 “\\*” 字符串

c_str()函数返回一个指向正规C字符串的指针

这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。


返回值:如果查找成功,那么就返回一个long型的唯一查找用的句柄。这个句柄会在_findnext函数中被使用。失败的话就会返回0.

参数:filespec:标明文件的字符串。例如:*.c ,则表示当前文件夹下的所有后缀为C的文件。

           fileinfo:这里就是用来存放文件信息的结构体的指针。函数成功后,函数会把找到的文件的信息放入这个结构体所分配的内存空间中。

int _findnext( long handle, struct _finddata_t *fileinfo );

返回值:若成功返回0,否则返回-1。

参数:handle:即由_findfirst函数返回回来的句柄。

int _findclose( long handle );

返回值:成功返回0,失败返回-1。

你可能感兴趣的:(C++中_finddata_t结构体存储文件信息详解)