【文件IO】Linux 文件操作(一) —— 遍历指定目录下的所有文件
目录
一、访问目录相关函数
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。
二、遍历指定目录下的所有文件
遍历目录的步骤主要有两步:
- 使用 opendir 获取到目录指针
- 通过目录指针同时搭配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 文件操作(一) —— 遍历指定目录下的所有文件相关推荐
- c# 遍历文件夹深度_C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)...
//遍历一个目录下所有的文件列表,代码实例 DirectoryInfo dir = new DirectoryInfo(folderName); var list = GetAll(dir); /// ...
- 将linux目录中的特定文件推送到手机_linux复制指定目录下的全部文件到另一个目录中,linux cp 文件夹...
linux复制指定目录下的全部文件到另一个目录中 复制指定目录下的全部文件到另一个目录中 文件及目录的复制是经常要用到的.linux下进行复制的命令为cp. 假设复制源目录 为 dir1 ,目标目录为 ...
- 遍历指定目录下的图片文件 显示在gridview 并添加点击事件
先上图: gridview布局 <?xml version="1.0" encoding="utf-8"?> <GridView xmlns: ...
- 文佳夹操作之获取指定目录下的所有文件及文件夹
要想获取当前文佳夹下所有文件,可通过Directory类的Getfiles方法来实现,此方法返回字符串数组 格式为: 用for循环输出class Program{static void Main(st ...
- golang filepath.Walk遍历指定目录下的所有文件
package main import ( "fmt" "os" "path/filepath" ) func wa ...
- MFC遍历指定目录下的所有文件/文件夹(不遍历子目录)
新建一个C++控制台程序,增加对MFC的应用.源代码如下: // TraverseDir.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" # ...
- Linux拓展之查找指定目录下的最大文件
概述 有时候我们需要查找指定目录下的最大文件,通常说的指定目录包括该目录下的所有文件和子目录下的所有文件.如下是几种能查找最大文件的方法. 方法一 查找指定目录下的最大文件,但不包括所有子目录,只包括 ...
- [Linux C]递归遍历指定目录下的子目录和文件
/* 功能:演示了在Linux下利用C语言递归遍历指定目录下的子目录(不含隐藏目录)和文件 */ #include <stdio.h> #include <dirent.h> ...
- Java 目录操作二(获取文件的上级目录、获取目录最后修改时间、打印目录结构、遍历指定目录下的所有目录)
获取文件的上级目录 import java.io.File;public class Main {public static void main(String[] args) {File file = ...
最新文章
- whoosh学习(1)
- 【laravel】docker 部署laravel 遇到的问题?
- 今日头条Java后台Java研发三面题目
- supersocket新的配置属性 textEncoding
- redis学习篇(九)-----高级特性之事务处理
- python计算平面的法向-利用协方差矩阵求解特征值和特征向量
- Linux服务器 屏蔽国外IP访问及简单的防CC攻击拦截
- RestClientException: Could not extract response: no suitable HttpMessageConverter found for response
- 南开大学c语言100题,计算机二级C语言上机(南开大学)100题.doc
- 一元线性模型的中位数回归
- substratum android8,substratumlite主题管理
- 《Windows 8 权威指南》——2.5 Windows 8 Metro应用内存回收机制
- 基于QlExpress实现薪资计算
- 导线中电流分布和集肤深度
- html5游戏引擎国内文献综述,html5论文参考文献范例借鉴
- 编程好学吗,学完能做什么,怎么学才好?
- 北大青鸟java项目实践_s2 北大青鸟Java S2 八个上机考试项目 Develop 249万源代码下载- www.pudn.com...
- A43s安装黑苹果10.9.3.
- 一个聪明男人的娶人经验,很实在很有道理
- impala-shell基本命令
热门文章
- strtoupper() 函数
- Git操作 fatal: bad numeric config value ‘“false”‘ for ‘http.sslverify‘: invalid unit错误
- outlook附加文件超过服务器允许大小,如何在Outlook中更改或增加附件大小限制?...
- 人生百味-2:钱和面子的关系
- 在控制台,打印出某个具体的变量,并监听其变化
- Adobe或QQ的oxc000007b错误解决方案.
- AdGuard过滤规则
- 【技术备忘录】基于PicGo+GitHub+Typora创建自己的MarkDown自动图床
- 最全数据集网站汇总,绝对是一个金矿请查收!
- 为大地增添一抹绿色植树节公益活动