遍历显示目录文件的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;
}
posted @ 2010-11-17 21:47  steel_heart  阅读(705)  评论(0编辑  收藏  举报