遍历显示目录文件的C++语言程序代码

功能是显示目录下的所有文件和文件夹。

先介绍几个结构体和函数;

1、struct _find_data_t

{

  unsigned int attrib;

  time_t time_create; //创建时间

  time_t time_acess; //最后一次访问时间

  time_t time_write;  //最后一次修改时间

  _fsize_t size;   //文件大小,_fsize_t 相当于 unsigned int

  char name[_MAX_FNAME];

};

attrib: 文件的属性:主要有以下这些 :

  _A_ARCH_(存档)

  _A_HIDDEN(隐藏)

  _A_NOMAL(正常)

  _A_RDONLY(只读)

  _A_SUBDIR(文件夹)

  _A_SYSTEM(系统)

2、_findfirst()函数

原型:long _findfirst(char *filespec, struct _find_data_t *fileinfo);

返回值:如果查找成功,则查找用的唯一句柄,若失败, 则返回-1;

参数值 :

filespec: 表明文件的字符串,可以支持通配符

fileinfo: 用来存放文件的信息;

3、_findnext()函数

原型:int  _findnext(long handle, struct _file_data_t * fileinfo);

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

参数: handle:上一步得到的句柄 ;

   fileinfo  : 用来存放查到的文件信息;

4、_finfclose()函数

原型:int _findclose(long handle);

返回值 :成功返回0;否则返回 -1;

参数  ; handle:_findfirst()返回的函数句柄

 

#include <stdio.h>

#include <stdlib.h>

#include <io.h>

#include <string>

#include <iostream>

using namespace std;



void fileSearch(string path)

{

    struct _finddata_t file;

    long fileHandle;

    string curPath = path + "\\*.*";

    if ((fileHandle = _findfirst(curPath.c_str(), &file)) == -1) 

    {

        return;

    }

    

    do {

        if (strcmp(file.name, "..")!=0 && strcmp(file.name, ".")!=0) 

        {

            if (_A_SUBDIR == file.attrib) 

            {

                curPath = path + "\\" + file.name;

                fileSearch(curPath);

            }

            else 

            {

                printf("%s\n", file.name);

            }

        }

    } while (!(_findnext(fileHandle, &file)));

    _findclose(fileHandle);

}



int main(int argc, const char *argv[])

{

    string path = "c:\\KDMVideo\\20120421";

    fileSearch(path);

    return 0;

}

你可能感兴趣的:(C++)