linux c 读取文件目录内容


linux c 读取文件目录内容

一个程序需要读取某个目录下的文件列表是linux c 下的常用操作。
linux 提供了一系列函数,使的目录可以当作一个对象来操作,从而避免程序在执行时必须依赖一个文件系统所决定的目录特定格式。

打开和关闭目录的相关函数如下:
#include < dirent.h>
DIR * opendir(const char * pathName);
struct dirent *readdir(DIR *dir);
int closedir(DIR *dir);
int rewinddir(DIR *dir);
opendir函数会返回一个DIR数据类型的指针,这个数据类型是抽象的,只能在C函数库中操作。
当目录存在时,通过opendir函数可以被成功执行,并返回DIR结构体,此时我们可以通过readdir函数依次读取目录中的文件名。
rewinddir函数的功能是重置DIR结构,然后我们再重新使用readdir函数读取目录。

例:
#include < stdio.h>
#include < dirent.h>

int main(void){
DIR *dir;
struct dirent *ent;

if(!(dir = opendir(“.”))){
printf(“open dir is error!\n”);
return 1;
}

while((ent = readdir(dir))){
printf(“%s\n”,ent->d_name);

}

closedir(dir);
return 0;
}

加入目录运行截图
dircontents