Linux 文件操作(一) —— 遍历指定目录下的所有文件

news2024/11/17 1:36:34

目录

一、访问目录相关函数

1、打开/访问目录 (opendir / fdopendir)

2、读取目录内容 (readdir)

3、关闭目录 (closedir)

二、遍历指定目录下的所有文件


一、访问目录相关函数

1、打开/访问目录 (opendir / fdopendir)

opendir / fdopendir 函数的作用是访问指定路径的目录,函数声明如下:

(1) opendir

opendir 函数是通过用户提供的目录路径来访问目录,参数是目录路径,返回值是目录指针 DIR*,是一个目录结构体,存放了目录的相关信息,类似于之前文件操作里的 FILE*,用户可以通过这个目录指针来访问目录。

(2) fdopendir

和 opendir 函数的作用一样,不一样的地方在于,fdopendir 函数的参数是文件描述符(需搭配open函数来使用),Linux下一切皆文件,目录也可以看作是一个文件,也可以使用open函数来获取其对应的文件描述符。

2、读取目录内容 (readdir)

readdir 函数的作用是读取目录流中的内容。函数声明如下:

参数:opendir / fdopendir 返回的目录指针

返回值:失败返回NULL,成功返回一个包含目录信息的结构体,关于该结构体的定义如下,需要重点关注的是 最后一个结构体成员 d_name

注意:和文件指针一样,每调用一次 readdir, 目录指针 DIR 就会指向当前目录中的下一个目录或者普通文件,当到达目录尾会返回NULL。

3、关闭目录 (closedir)

closedir 的作用是关闭一个打开的目录,参数就是打开目录文件时返回的目录指针。成功返回 0,失败返回 -1。

二、遍历指定目录下的所有文件

遍历目录的步骤主要有两步:

  1. 使用 opendir 获取到目录指针
  2. 通过目录指针同时搭配readdir函数,只要返回结果不为NULL,那就继续遍历,直到遍历目录下的每一个文件 。
int main(int argc, char** argv)
{
	DIR* dir = opendir("/home/linux/Templates");        // 打开一个目录
	if (dir == NULL)
	{
		perror("opendir");
		return -1;
	}

	struct dirent* dnt;
	while((dnt = readdir(dir))!=NULL)            // 只要返回结果不为NULL,就一直遍历
	{
		printf("%s\n",dnt->d_name);
	}

    closedir(dir);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工程基建--前端基建

序: 工程基建 : 编码规范、api规范、前后端协作、环境部署、微服务、微前端、性能、安全防御、统计监控、可视化 等等的建设; 后端基建: 后端规范文档、后端模板、安全、日志、微服务、RESTful API、中间件、数据库、分布式、权…

新手怎么做微信商城小程序_微信商城小程序模版哪里找

微信小程序已经在我们的生活中随处可见,甚至是抖音头条等其它的平台也开始做起了小程序,在这种情况下,微信小程序势必会成为未来商城的主战场之一。闻风而来想做小程序的人不少,而其中新手零基础也能做的小程序商城模板类工具&…

C++入门教程2||C++ 数据类型

C 数据类型 使用编程语言进行编程时,需要用到各种变量来存储各种信息。变量保留的是它所存储的值的内存位置。这意味着,当您创建一个变量时,就会在内存中保留一些空间。 您可能需要存储各种数据类型(比如字符型、宽字符型、整型…

【Leetcode】15. 三数之和

一、题目 难度不小 注意是不能重复 Python提交格式,返回一个list 二、暴力解法 排序 三重循环 有没有像我这样的傻子,三重循环,还没去重 后来发现要去重,必须要先排序,然后判断一下当前的数是否跟前面那个数相同&am…

SpringBoot项目如何优雅的实现操作日志记录

前言 大家好,我是希留。 在实际开发当中,对于某些关键业务,我们通常需要记录该操作的内容,一个操作调一次记录方法,每次还得去收集参数等等,会造成大量代码重复。 我们希望代码中只有业务相关的操作&…

html5期末大作业 基于HTML+CSS制作dr钻戒官网5个页面 企业网站制作

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Java中的多重继承问题

继承是面向对象编程 (OOP) 语言(如Java)的主要功能之一。它是一种以增强软件设计中类重用能力的方式组织类的基本技术。多重继承是众多继承类型之一,是继承机制的重要原则。但是,它因在类之间建立模棱两可的…

使用HTML实现一个静态页面(含源码)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

什么密码,永远无法被黑客攻破?

在开始本文前,先给大家出个解谜题,密码是一句英文,开动你的脑筋吧,我们在本文结尾会揭晓答案: 密文:Cigumpz yin hvq se 提示:和身份有关的一切 说起破译密码,就不得不提一个人&a…

Vue3中vite.config.js文件相关配置和mock数据配置

文章目录1. vite.config.js文件相关配置2. 路径别名3. mock数据配置1. vite.config.js文件相关配置 import { defineConfig } from vite import vue from vitejs/plugin-vue import vueJsx from vitejs/plugin-vue-jsx import path from path// https://vitejs.dev/config/ ex…

简单的股票行情演示(二) - AKShare

一、概述二、环境搭建三、使用总结 1、API文档2、数据字典3、效果截图4、后台服务四、相关文章原文链接:简单的股票行情演示(二) - akshare 一、概述 上一篇文章简单的股票行情演示(一) - 实时标的数据中讲述了从新浪…

web前端期末大作业 HTML+CSS+JavaScript仿安踏

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业,Web大学生网页 HTML&a…

连续仨月霸占牛客榜首,京东T8呕心巨作:700页JVM虚拟机实战手册

什么是Java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息&#xff0c…

Linux下 生成coredump文件

一. coredump文件路径 网上很多博文说到 coredump 文件默认会在默认的目录下生成。 按照网上很多的说法,再运行程序就会生成core文件,一般路径和可执行程序一个路径。 但是,我尝试在 ubuntu20.04系统下,怎么也找不到去哪里了&a…

设计模式之美——KISS、YAGNI原则

KISS 原则算是一个万金油类型的设计原则,可以应用在很多场景中。它不仅经常用来指导软件开发,还经常用来指导更加广泛的系统设计、产品设计等,比如,冰箱、建筑、iPhone 手机的设计等等。 我们知道,代码的可读性和可维…

ASIFT算法过程实现 --- 配置避坑指南

常规的SIFT算法进行图像匹配的时候,只能进行两个摄像机夹角比较小的(最大是15),拍摄的图像进行相机的图像匹配,但是针对于相机之间的夹脚比较大的时候,上述的算法匹配就是会出现问题.为了解决上面的这个问题,使用了一种改进的算法匹配方式ASIFT算法进行匹配.具体这种算法的优点…

MYSQL进阶(2)

删除索引:drop Index indexName on tableName; B树叶子结点和非叶子节点都存在数据,那么当数据量很大的时候,把索引加载起来就需要很长时间 联合索引: 1)定义:是给一张表上面的多个列增加索引,也就是说给表上面的多个列增加索引,供…

MongoDB聚集分析

文章目录 聚集操作管道模式聚集MapReduce 聚集简单聚集函数小结聚集操作 聚集操作是对数据进行分析的有效手段。MongoDB 主要提供了三种对数据进行分析计算的方式:管道模式聚集分析、MapReduce聚集分析、简单函数和命令的聚集分析。 管道模式聚集 这里所说的管道类似于UNIX…

2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 思路及代码实现(持续更新中)

2022 APMCM亚太数学建模竞赛 C题 全球是否变暖 思路及代码实现(持续更新中) 1 题目 全球变暖与否? 加拿大49.6C的高温为地球北纬50以上地区创造了新的气温记录,一周内就有数百人死于高温;美国加利福尼亚州死亡谷54.4C,是地球上有记录以来的最高温度;科…

Ubuntu 16.4虚拟机 配置Hadoop集群

Ubuntu 16.4 配置Hadoop集群总体步骤环境说明虚拟机配置java安装hadoop安装与配置克隆虚拟机ssh安装使用,免密登录更改hadoop配置结束语总体步骤 1、虚拟机配置 2、java安装 3、hadoop下载配置 4、复制虚拟机 5、ip更换,使用固定ip,并且每台…