当前位置: 首页 > news >正文

io目录操作学习

1、基本概念

        目录也是一种文件,因此操作流程与普通文件类似,有诸如打开、关闭、定位等概念,但目录是一种特殊的文件,目录存储的数据的最小单位并不是字符,而是目录项。这使得目录跟普通文件又有区别。

在Linux中,目录有几个要点:

  • 整个分区被分成两部分,一部分称为i节点域,另一部分称为数据域
    • i节点域记录的是整个分区的基本信息,包括分区可用空间和已用空间的管理信息
    • 数据域存储文件实际内容数据
    • 目录所存储的数据单元是目录项,目录项指的是结构体

struct dirent{},其内部保存的是文件的名称、i节点号等基本信息,不包含文件具体内容。

// 目录项结构体
struct dirent
{ino_t          d_ino;       /* Inode number */编号off_t          d_off;       /* Not an offset; see below */unsigned short d_reclen;    /* Length of this record */记录的长度unsigned char  d_type;      /* Type of file; not supported by all filesystem types */文件类型char           d_name[256]; /* Null-terminated filename */文件名
};
  • 任何一个目录至少包含两个目录项:.和..
    • .代表当前目录,..代表上一级目录
    • 如果本目录就是根目录,那么..也代表本级目录

2、目录的创建与删除

 

int main(void)
{// 在家目录下创建一个空目录mkdir("/home/share/str", 0755);// 将空目录删除(以下两条语句等价)rmdir("/home/share/str");remove("/home/share/str");
}

3、目录的打开,关闭与读取

注:

  • 与文件指针类似,目录指针并不指向目录中的数据,它仅仅是代表了目录;
  • 打开目录并不是进入目录,实际上进入目录的函数是:chdir()

  • 读取目录获得的不是一个个的字节,而是一个个“目录项”;

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>int main(int argc,char *argv[])
{//打开目录argv[1],获取目录指针DIR *fd=opendir(argv[1]);if(fd==NULL)return 0;//读取每个目录项,并输出各个文件的名字struct dirent *p;while (1){p=readdir(fd);if (p==NULL){printf("读完了!\n");break;}printf("%s\n",p->d_name);}return 0;
}

输出:

http://www.lryc.cn/news/420940.html

相关文章:

  • Ant-Design-Vue
  • 2024互联网暑期实习面经和流程记录分享
  • 风云崛起之拉氏变换和拉式逆变换
  • 1、.Net UI框架:WinUI - .Net宣传系列文章
  • 计算机的错误计算(五十九)
  • 【数学分析笔记】第1章第1节:集合(1)
  • 计算机毕业设计 校园失物招领网站 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • GIT指令大全详解
  • ECCV2024,清华百度提出ReSyncer:可实现音频同步嘴唇动作视频生成。
  • 论文笔记:YOLOv8-QSD 自动驾驶场景小目标检测算法
  • Vue.js状态管理:Vuex与Pinia的比较
  • OJ题目【栈和队列】
  • [shell][git]git将当前分支的HEAD指针重置到最后一次提交的状态
  • 高翔【自动驾驶与机器人中的SLAM技术】学习笔记(六)卡尔曼滤波器二:图解卡尔曼滤波器;卡尔曼滤波器公式理解;面试答法;
  • 高性能日志系统 日志输出模块逻辑
  • haproxy基础
  • C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)
  • LVS实验——部署DR模式集群
  • pythonUI自动化008::allure测试报告(安装及应用)
  • 常用的 git 和 linux 命令有哪些?
  • MYSQL 删除一个字段前,判断字段是否存在
  • vulnstack-5
  • 回归预测|基于灰狼优化GWO-Transformer-BiLSTM组合模型的数据回归预测Matlab程序 多特征输入单输出
  • STM32的USB接口介绍
  • 【中等】 猿人学web第一届 第2题 js混淆 动态cookie 1
  • ubuntu 22.04 安装 docker(服务器从毛胚到精装)
  • Vue3从零开始——如何巧妙使用setup语法糖、computed函数和watch函数
  • 【C++】 特殊类设计:从构思到实现,引领设计新潮流
  • 性能调优 18. Tomcat整体架构及其设计精髓分析
  • 【C++高阶】:特殊类设计和四种类型转换