linux下遍历文件夹---opendir等用法

首先要说肯定是头文件,#include <sys/types.h>   #include <dirent.h>

linux下遍历文件夹需要用到以下几个函数,其中有三个是必须的,其它几个是可选的.

DIR* opendir(const char * name);   失败返回NULL.成功返回DIR结构体.注意DIR前面没有struct,如果加上编译器会warning

struct dirent *readdir(struct DIR* dir);   失败返回NULL.

void closedir(DIR* dir);   关闭打开的目录描述符dir,同时释放dir空间.

可选的函数有:

long int telldir(DIR* dir);   当前指针的位置,结合ftell理解可能更好理解一点,只不过ftell偏移的单位是字节,而这里偏移的单位是DIR结构体.

void seekdir(DIR* dir, long int pos);   将指针指向pos对应的偏移,结合fseek理解,区别在于这里的偏移只相对于头(相当于默认SEEK_SET).

void rewinddir(DIR* dir);   顾名思义,即将指针从新定位到第一位.结合rewind理解.作用是类似的.

当然还有scandir,没有去看用法.所以不做介绍.

下面通过实例对以上的函数进行解释:

linux程序设计中的例子:

运行结果如下:

下面再说下seekdir,telldir和rewinddir.

这三个函数实在没有办法联想具体的应用场景,因为如果不是看过readdir的读取顺序,seekdir和rewinddir的行为就有点不可控.虽然知道自己停在了第几个偏移量,却可能不知道那个位置的文件.不过我也不敢说这三个函数就是无用的.仅仅是我没有用过而已,如果有同学用过这样具体的场景,也可以讲给我.不胜感激.

关于目录就写到这里,可能很多同学已经开始有重写ls的冲动了吧.可以作为一个小小的兴趣尝试一下.

时间: 2024-10-20 09:12:28

linux下遍历文件夹---opendir等用法的相关文章

Linux下的文件夹创建命令使用实践

[文章摘要] 本文以实际的C源程序为样例,介绍了Linux下的文件夹创建命令(mkdir)的用法.为相关开发工作的开展提供了故意的參考. [关键词] C语言  Linux  文件夹创建  makefile  开发 一.mkdir命令简单介绍 mkdir命令用来创建指定名称的文件夹,其命令格式为:mkdir [选项] 文件夹... 当中,[选项]能够是"-m"."-p"或"-v". 此外,文件夹名是区分大写和小写的. 二.本程序流程 本文中的程序用

linux c遍历文件夹的方法

linux c遍历文件夹的方法比较简单,使用c来实现 #include <iostream> #include <stdio.h> #include <sys/types.h> #include <dirent.h> #include <sys/dir.h> #include <sys/stat.h> ... enum{    DT_UNKNOWN = 0,     //未知类型    DT_FIFO = 1,        //管道

Linux下各个文件夹的作用

linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序 /tmp 公用的临时文件存储点 /root 系统管理员的主目录(呵呵,特权

linux下设置文件夹打开方式

你是否为在linux下打开文件夹每次都新打开一个窗口而感到烦恼,想像windows平台一样打开文件夹都覆盖父窗口打开. 设置方法如下: 打开system-preferences-File Management,如下图: 2.选择behavior,勾选Always open in browser windows,重新打开文件夹就是windows下的打开方式了.如图:

linux下各文件夹的结构说明及用途介绍

linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令.   /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示.   /lib:标准程序设计库,又 叫动态链接共享库,作用类似windows里的.dll文件.   /sbin:系统管理命令,这 里存放的是系统管理员使用的管理程序. /tmp:公用的临时文件存储 点. /root:

【转】linux下各文件夹的结构说明及用途介绍

linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示. /lib:标准程序设计库,又 叫动态链接共享库,作用类似windows里的.dll文件. /sbin:系统管理命令,这 里存放的是系统管理员使用的管理程序. /tmp:公用的临时文件存储 点. /root:系统管理员的

纯干货!Linux 下各文件夹的结构说明及用途介绍

linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示. /lib:标准程序设计库,又 叫动态链接共享库,作用类似windows里的.dll文件. /sbin:系统管理命令,这 里存放的是系统管理员使用的管理程序. /tmp:公用的临时文件存储 点. /root:系统管理员的

C++下遍历文件夹

编写程序遍历文件夹及其子文件夹下所有文件,并输出到标准输出流或者文件流. 1. 先考虑在单层目录下,遍历所有文件.以C:\WINDOWS为例: 用到数据结构_finddata_t,文件信息结构体的指针. struct _finddata_t{ unsigned attrib; //文件属性 time_t time_create; //文件创建时间 time_t time_access; //文件上一次访问时间 time_t time_write; //文件上一次修改时间 _fsize_t siz

LINUX 拥有遍历文件夹功能的 查找关键字 文件、文件夹

查找文件: [[email protected] admin]# find . -type f -name "a.txt" ./Downloads/hadoop-2.10.0/a.txt 拥有遍历文件夹功能的 查找关键字 文件.文件夹: [[email protected] admin]# vi a [[email protected] admin]# find /home/admin/ -type f | xargs grep "i like apple" Bin