一、目录访问
1、什么是目录?
linux系统中# linux应用开发----目录操作
概述
-
什么是目录
Linux系统中目录是一种特殊的文件,与普通文件不同之处在于存储内容不同,普通文件往往存储的是数据,目录存储的是文件或子目录的信息。
-
目录的基本操作
2.1 操作流程
1) 打开目录,获取目录指针
opendir
头文件: #include <sys/types.h>
#include <dirent.h>
函数原型: DIR* opendir(const char* dir);
函数功能: 打开目录
函数参数: dir: 目标目录
函数返回值:
成功 返回 目录指针
失败 返回 NULL: 错误码会存放在errno里
2) 目录遍历
readdir
头文件: #include <sys/types.h>
#include <dirent.h>
函数原型: struct dirent* readdir(DIR* dir);
函数功能: 遍历目录
函数参数: dir: 目录指针
函数返回值:
成功 返回 目录指针
失败 返回 NULL: 错误码会存放在errno里
3) 目录关闭,释放目录指针
closedir
头文件: #include <sys/types.h>
#include <dirent.h>
函数原型: int closedir(DIR* dir);
函数功能: 打开目录
函数参数: dir: 待关闭的目录指针
函数返回值:
成功 返回 0
失败 返回 -1: 错误码会存放在errno里
/*以下为目录基本操作的演示代码*/
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main(int argc , char** argv)
{
if(argc < 2)
{
fprintf(stderr,"Usage <%s directory>\n",argv[0]);
return -1;
}
//打开一个目录文件
DIR *d = opendir(argv[1]);
//判断是否创建成功,成功返回0,否则返回-1并存放在errno里面,可以用perror查看错误原因
if(d == NULL)
{
perror("opendir");
return -1;
}
//定义一个目录结构体类型的指针,赋值为空
struct dirent *p = NULL;
//遍历目录文件
while(p = readdir(d))
{
printf("%s ",p -> d_name);
}
printf("\n");
//关闭目录文件
closedir(d);
return 0;
}