Linux系统IO目录文件操作

Linux目录文件 维护着一个链表的数据结构,目录文件的结构和单向链表的节点的类似,可利用链表的遍历方法来实现目录文件遍历.但是直接使用目录流对象不会得到一个链表的节点(因为是流对象),需要配合readdir指令来移动流的当前位置指针,并获得相应的链表节点(目录下的文件的信息)

 

需要的头文件

#include<dirent.h>

#include<sys.types>

//和流无关,目录相关操作用

#include<unistd.h>

 

目录的基本操作单位,

1.

DIR* dir =opendir([path]) ;

使用opendir函数,返回目录文件的结构体指针,指针指向目录的第一个文件

2.struct dirent*  filelist  = readdir(dir);

重要的信息排序:1.文件名 2.文件类型 3.文件长度 4.文件的inode 5.下一个dirent的偏移信息(一般用不到,这里是因为根据文件名的长度不同,分配的空间也不同,所以步长也不一样).

通过readdir函数来获取目录结构体中保存的文件指针
 

目录文件的基本操作:

 //所有和当前工作目录有关的指令使用时,都需要考虑是否需要修改当前工作目录

//更改目录需要使用新的目录的地址
1.获取当前工作目录

#include<unistd.h>

char* getcwd(char* buf,size_t size);

2.更改当前工作目录

int chdir(const char* path);

3.创建和删除目录

//当创建的目录不存在时,需要赋予其权限,但是也会受到umask的影响

创建 int mkdir(const char* path,mode_t mode);

删除 int rmdir(const char* path);

4.打开关闭目录流

DIR* dir = opendir(const char* path);

closedir(DIR* dir);

5.从目录流中获取dirent信息

struct dirent* pdirent  = readdir(DIR* dir) 此时文件流指针会向后移动一个单位

6.由于其属于流,具有流的性质,因此也拥有流的相应指针

返回当前流的位置

off_t telldir(DIR* dir);

设置到相应流的位置

 void seekdir(DIR* dir,off_t offset); //会设定到指定位置的下一个位置

重定位到目录流的起始位置

void rewind(DIR* dir);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值