• 遍历显示目录文件的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;
    }
  • 相关阅读:
    LOJ P10004 智力大冲浪 题解
    LOJ P10011 愤怒的牛 题解
    LOJ P10002 喷水装置 题解
    洛谷 P2279 [HNOI2003]消防局的设立 题解
    洛谷 P5640 【CSGRound2】逐梦者的初心 题解
    洛谷 P2827 蚯蚓 题解
    [SHOI2012]魔法树
    浅析树链剖分
    [Bzoj1731]排队布局
    [POJ-1201]Intervals
  • 原文地址:https://www.cnblogs.com/lovesaber/p/1880228.html
Copyright © 2020-2023  润新知