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

这篇具有很好参考价值的文章主要介绍了【文件IO】Linux 文件操作(一) —— 遍历指定目录下的所有文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、访问目录相关函数

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

2、读取目录内容 (readdir)

3、关闭目录 (closedir)

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


一、访问目录相关函数

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

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

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

(1) opendir

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

(2) fdopendir

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

2、读取目录内容 (readdir)

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

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

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

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

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

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

3、关闭目录 (closedir)

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

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

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

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

  1. 使用 opendir 获取到目录指针
  2. 通过目录指针同时搭配readdir函数,只要返回结果不为NULL,那就继续遍历,直到遍历目录下的每一个文件 。
#include <sys/types.h>
#include <dirent.h>
#include <cstring>

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,就一直遍历
	{
        // 滤除 . 和 .. 
        if (!strcmp(".", dnt->d_name) || !strcmp("..", dnt->d_name))
        {
            continue;
        }
		printf("%s\n",dnt->d_name);
	}

    closedir(dir);
	return 0;
}

【文件IO】Linux 文件操作(一) —— 遍历指定目录下的所有文件文章来源地址https://www.toymoban.com/news/detail-442362.html

到了这里,关于【文件IO】Linux 文件操作(一) —— 遍历指定目录下的所有文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包