美文网首页
Linux编程--readdir

Linux编程--readdir

作者: None_Ling | 来源:发表于2020-04-13 20:53 被阅读0次

    作用

    在Linux中, readdir是常用来遍历文件夹下的文件

    使用方法

    通常readdir都是与opendir配合使用. 通过opendir打开的目录, 使用readdir来进行遍历读取

    #include <sys/types.h>
    #include <dirent.h>
    //  通过全路径打开目录
    DIR *opendir(const char *name);
    //  通过目录的fd来打开
    DIR *fdopendir(int fd);
    
    #include <dirent.h>
    
    //  传入DIR, 返回目录相关信息
    struct dirent *readdir(DIR *dirp);
    //  在glibc的2.1.9版本前使用该函数,  而后使用readdir代替
    int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
    

    返回的dirent即 : directory_entry , 结构如下

    struct dirent {
          ino_t      d_ino;   // 文件的inode
          off_t      d_off;   //  该文件相对于文件夹的偏移量
          unsigned short d_reclen;    // d_name的长度
          unsigned char  d_type;   //  文件类型, 例如管道, Socket , Block等
          char      d_name[256]; // 文件名
      };
    

    事例

    例如查找一个目录下为name的文件

    DIR * dirp = NULL;
    // 通过opendir打开目录
    dirp = opendir(".");
    if (dirp == NULL) {
       return (ERROR);
    }
    len = strlen(name);
    dirent * dp = NULL;
    //  开始遍历dirp文件夹
    while ((dp = readdir(dirp)) != NULL) {
       //  比较dp->d_name与name的值, 如果匹配则返回
       if (dp->d_namlen == len && strcmp(dp->d_name, name) == 0) {
            (void)closedir(dirp);
            return (FOUND);
       }
    }
    //  关闭dir
    (void)closedir(dirp);
    return (NOT_FOUND);
    

    相关文章

      网友评论

          本文标题:Linux编程--readdir

          本文链接:https://www.haomeiwen.com/subject/zicsphtx.html