专栏首页Android相关Linux编程--readdir

Linux编程--readdir

作用

在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);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android中长连接的解决方案

    长连接通过Socket与服务端建立持久的链接,即使单个请求发送与接收后也不会释放链接。这样的好处有:

    None_Ling
  • Kotlin---data class

    None_Ling
  • 为什么使用Cmake编译出来的So只有arm64-v8a架构

    为何在使用Cmake编译JNI文件的时候,运行的时候,只会生成arm64-v8a架构的So打入Apk中,而并不会生成所有架构,如x86,mips等。

    None_Ling
  • C# HTTP系列13 以form-data方式上传多个文件以及键值对集合到远程服务器

    如果是在传统的管理系统或者网站中,上传到发布的IIS站点下,使用ASP.NET的上传控件结合后台的 HttpContext.Request.Files的相关类与...

    张传宁老师
  • 从 http协议角度解析okhttp

    OkHttp 是 Square 公司开源的一款网络框架,封装了一个高性能的 http 请求库。

    开发者
  • 高并发技术面试专题汇总,BAT技术面试不过如此!

    本文我们通过一篇真实的一线面经,带大家去体验一下 BAT 等互联网公司的面试现场氛围!

    慕容千语
  • Django学习笔记之Ajax与文件上传

    AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服...

    Jetpropelledsnake21
  • 在PowerBI的切片器中搜索

    在制作PowerBI报告时,一般来说,我们都会创建一些切片器。为了节省空间,一般情况下尤其是类目比较多的时候,大多采用下拉式的:

    陈学谦
  • .NET Core微服务之基于Steeltoe集成Zuul实现统一API网关

    Tip: 此篇已加入.NET Core微服务基础系列文章索引,本篇接上一篇《基于Steeltoe使用Eureka实现服务注册与发现》,所演示的示例也是基于上一篇...

    Edison Zhou
  • Spring Boot Admin 2.1.0 全攻略

    Spring Boot Admin是一个开源社区项目,用于管理和监控SpringBoot应用程序。 应用程序作为Spring Boot Admin Client...

    方志朋

扫码关注云+社区

领取腾讯云代金券