linux应用开发----目录操作

43 阅读1分钟

一、目录访问

1、什么是目录?

 linux系统中# linux应用开发----目录操作

概述

  1. 什么是目录

    Linux系统中目录是一种特殊的文件,与普通文件不同之处在于存储内容不同,普通文件往往存储的是数据,目录存储的是文件或子目录的信息。

  2. 目录的基本操作

    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;
}