目录

一、访问目录相关函数

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,那就继续遍历,直到遍历目录下的每一个文件 。
#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 文件操作(一) —— 遍历指定目录下的所有文件相关推荐

  1. c# 遍历文件夹深度_C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)...

    //遍历一个目录下所有的文件列表,代码实例 DirectoryInfo dir = new DirectoryInfo(folderName); var list = GetAll(dir); /// ...

  2. 将linux目录中的特定文件推送到手机_linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹...

    linux复制指定目录下的全部文件到另一个目录中 复制指定目录下的全部文件到另一个目录中 文件及目录的复制是经常要用到的.linux下进行复制的命令为cp. 假设复制源目录 为 dir1 ,目标目录为 ...

  3. 遍历指定目录下的图片文件 显示在gridview 并添加点击事件

    先上图: gridview布局 <?xml version="1.0" encoding="utf-8"?> <GridView xmlns: ...

  4. 文佳夹操作之获取指定目录下的所有文件及文件夹

    要想获取当前文佳夹下所有文件,可通过Directory类的Getfiles方法来实现,此方法返回字符串数组 格式为: 用for循环输出class Program{static void Main(st ...

  5. golang filepath.Walk遍历指定目录下的所有文件

    package main import (     "fmt"     "os"     "path/filepath" ) func wa ...

  6. MFC遍历指定目录下的所有文件/文件夹(不遍历子目录)

    新建一个C++控制台程序,增加对MFC的应用.源代码如下: // TraverseDir.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" # ...

  7. Linux拓展之查找指定目录下的最大文件

    概述 有时候我们需要查找指定目录下的最大文件,通常说的指定目录包括该目录下的所有文件和子目录下的所有文件.如下是几种能查找最大文件的方法. 方法一 查找指定目录下的最大文件,但不包括所有子目录,只包括 ...

  8. [Linux C]递归遍历指定目录下的子目录和文件

    /* 功能:演示了在Linux下利用C语言递归遍历指定目录下的子目录(不含隐藏目录)和文件 */ #include <stdio.h> #include <dirent.h> ...

  9. Java 目录操作二(获取文件的上级目录、获取目录最后修改时间、打印目录结构、遍历指定目录下的所有目录)

    获取文件的上级目录 import java.io.File;public class Main {public static void main(String[] args) {File file = ...

最新文章

  1. whoosh学习(1)
  2. 【laravel】docker 部署laravel 遇到的问题?
  3. 今日头条Java后台Java研发三面题目
  4. supersocket新的配置属性 textEncoding
  5. redis学习篇(九)-----高级特性之事务处理
  6. python计算平面的法向-利用协方差矩阵求解特征值和特征向量
  7. Linux服务器 屏蔽国外IP访问及简单的防CC攻击拦截
  8. RestClientException: Could not extract response: no suitable HttpMessageConverter found for response
  9. 南开大学c语言100题,计算机二级C语言上机(南开大学)100题.doc
  10. 一元线性模型的中位数回归
  11. substratum android8,substratumlite主题管理
  12. 《Windows 8 权威指南》——2.5 Windows 8 Metro应用内存回收机制
  13. 基于QlExpress实现薪资计算
  14. 导线中电流分布和集肤深度
  15. html5游戏引擎国内文献综述,html5论文参考文献范例借鉴
  16. 编程好学吗,学完能做什么,怎么学才好?
  17. 北大青鸟java项目实践_s2 北大青鸟Java S2 八个上机考试项目 Develop 249万源代码下载- www.pudn.com...
  18. A43s安装黑苹果10.9.3.
  19. 一个聪明男人的娶人经验,很实在很有道理
  20. impala-shell基本命令

热门文章

  1. strtoupper() 函数
  2. Git操作 fatal: bad numeric config value ‘“false”‘ for ‘http.sslverify‘: invalid unit错误
  3. outlook附加文件超过服务器允许大小,如何在Outlook中更改或增加附件大小限制?...
  4. 人生百味-2:钱和面子的关系
  5. 在控制台,打印出某个具体的变量,并监听其变化
  6. Adobe或QQ的oxc000007b错误解决方案.
  7. AdGuard过滤规则
  8. 【技术备忘录】基于PicGo+GitHub+Typora创建自己的MarkDown自动图床
  9. 最全数据集网站汇总,绝对是一个金矿请查收!
  10. 为大地增添一抹绿色植树节公益活动