• opendir、readdir以及使用


    opendir,打开一个目录。

      函数原型:DIR *opendir(const char *name)

        DIR *fopendir(int fd)

      DIR是一个结构指针,是一个内部结构,保存所打开的目录信息。函数出错返回NULL

    readdir,读目录 ,<dirent.h>

      函数原型:struct dirent *readdir(DIR *dirp);  //返回一条记录项(文件或目录)

           int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);

    struct dirent
    {
        ino_t d_ino;    //此目录进入点的inode
        ff_t d_off;    //目录文件开头至此目录进入点的位移
        signed short int d_reclen;     //d_name 的长度,不包含NULL
        unsigned char d_type;     //d_name 所指的文件类型
        har d_name[256];     //文件名
    }

    递归获取文件个数

    #include <dirent.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    
    int getFileNum(char *root)
    {
        //open dir
        DIR* dir = NULL;
        dir = opendir(root);
        if(dir == NULL)
        {
            perror("opendir");
            exir(1);
        }
        
        //遍历当前打开的目录
        struct dirent* ptr = NULL;
        char path[1024] ={0};
        int total = 0;
        while(ptr = readdir(dir) != NULL)
        {
            //过滤. 和 ..
            if(strcmp(ptr->d_name, ".") == 0 || strcmp(ptr->d_name, "..") == 0)
            {
                continue;
            }
            if(ptr->d_type == DT_DIR)
            {
                //递归 读目录
                sprintf(path, "%s/%s", root, ptr->d_name);
                total += getFileNum(path);
            }
            //如果是普通文件
            if(ptr->d_type == DT_REG)
            {
                total++;
            }
        }
        //还需要关闭目录
        closedir(dir);
        return total;
    }
    
    int main(int argc, char *argv[])
    {
        if(argc < 2)
        {
            printf("./a.out dir
    ");
            exit(1);
        }
    
        int total = getFileNum(argv[1]);
        printf("%s has file numbers %d
    ", argv[1], total);
        return 0;
    }
  • 相关阅读:
    web-----------HTTP协议
    python基础作业------模拟实现一个ATM + 购物商城程序
    python--------进程与线程
    作业--用户输入数字0-100,判断成绩,用函数
    blog真正的首页
    blog首页视图
    让django完成翻译,迁移数据库模型
    创建Django博客的数据库模型
    创建blog APP
    在PyCharm上创建Django项目
  • 原文地址:https://www.cnblogs.com/lr1402585172/p/10490412.html
Copyright © 2020-2023  润新知