前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux编程--readdir

Linux编程--readdir

作者头像
None_Ling
发布2020-04-16 17:23:07
2.2K0
发布2020-04-16 17:23:07
举报
文章被收录于专栏:Android相关Android相关

作用

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

使用方法

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

代码语言:javascript
复制
#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 , 结构如下

代码语言:javascript
复制
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的文件

代码语言:javascript
复制
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);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 作用
  • 使用方法
  • 事例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档