使用C++获取目录下的指定文件:结构体_finddata_t 以及函数_findfirst、_findnext、_fineclose

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DY_1024/article/details/82791380

    获取文件夹里面下面的相同的文件是经常用的一个操作,比如我们需要获取文件下面所有的.exe文件,这个时候我们就需要一个结构体和三个函数来帮助我们。

    首先需要的结构体:struct _finddata_t

    这个结构体就是用来存储和文件有关的信息,其结构以及含义如下:

 struct _finddata_t
 {
       //文件属性的存储位置。它存储一个unsigned单元,用于表示文件的属性。文件属性是用位表示的,主要有以下一些:_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、_A_SUBDIR(文件夹)、_A_SYSTEM(系统)
       unsigned attrib;
       //这里的time_t是一个变量类型(长整型?相当于long int?),用来存储时间的,我们暂时不用理它,只要知道,这个time_create变量是用来存储文件创建时间的就可以了
       time_t time_create;
       //文件最后一次被访问的时间
       time_t time_access;
       //文件最后一次被修改的时间
       time_t time_write;
       //文件的大小。这里的_fsize_t应该可以相当于unsigned整型,表示文件的字节数
       _fsize_t size;
       //文件的文件名。这里的_MAX_FNAME是一个常量宏,它在<stdlib.h>头文件中被定义,表示的是文件名的最大长度
       char name[_MAX_FNAME];
 };

除了上述的结构体,还需要有三个函数:_findfirst,_findnext,_findclose,下面一一介绍

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

参数:    标明文件的字符串      用来存放文件信息的结构体指针
返回值:如果查找成功,将返回一个long型的唯一的查找用的句柄,这个句柄将在_findnext函数中将被使用
              失败则返回-1

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

参数:由_findfirst返回的值     用来存放文件信息的结构体指针,找到文件之后,函数将文件的信息放在结构体中
返回值:成功返回0,失败返回-1

int _findclose( long handle );

参数:由_findfirst返回的查找文件的句柄
返回值:成功返回0,失败返回-1,

    通常的思路我们是使用_findfirst函数来开始查找对应的字符串,然后使用_findnext函数来查询剩余的文件,最后使用_findclose函数来关闭句柄,然后三个函数里面传的参数都会使用到的一个:struct _finddata_t 的一个结构体指针

猜你喜欢

转载自blog.csdn.net/DY_1024/article/details/82791380
今日推荐