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

学习记录第二十一天

目录操作是指在计算机文件系统中对目录(也称为文件夹)进行的各种管理操作。目录是组织和存储文件的一种逻辑结构,它帮助用户和系统管理大量文件,使得文件查找和组织更加高效有序。目录操作主要包括以下几种:
  1.创建目录:在文件系统中创建一个新的目录,通常用于组织相关的文件或子目录。
  2.删除目录:从文件系统中移除一个目录。需要注意的是,大多数系统不允许删除非空的目录,即目录中还包含文件或子目录时,删除操作会失败。
  3.重命名目录:更改目录的名称,通常用于更准确地描述目录内容或避免命名冲突。
  4.移动目录:将目录从当前位置移动到另一个位置,这涉及到更改目录的路径。
  5.读取目录内容:查看目录中包含的文件和子目录列表。
  6.改变工作目录:更改当前正在使用的目录,这影响后续的文件操作的相对路径。
  7.查询目录属性:获取目录的元数据,如创建时间、修改时间、权限设置等。
这些操作在各种操作系统和编程环境中都有相应的命令或函数来实现,比如在Linux中,可以通过mkdir、rmdir、mv、ls等命令进行目录操作,在C语言中,则有opendir、readdir、mkdir、rmdir等函数来实现目录操作。正确和有效地进行目录操作对于文件管理和程序设计都是至关重要的。

打开目录
  1.opendir:用于打开一个目录,并返回一个指向该目录的指针。

#include <sys/types.h>
#include <dirent.h>
DIR *opendir(const char *name);

读取目录
  1.readdir:用于读取目录流,并返回一个指向struct dirent的指针,该结构包含了目录中下一个文件的信息。

#include <dirent.h>
struct dirent *readdir(DIR *dirp);

关闭目录
  1.closedir:用于关闭一个已经打开的目录流。

#include <sys/types.h>
#include <dirent.h>
int closedir(DIR *dirp);

创建目录
  1.mkdir:用于创建一个新的目录。

#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);

删除目录
  1.rmdir:用于删除一个目录,但只能删除空目录。

#include <unistd.h>
int rmdir(const char *pathname);

获取当前工作目录
  1.getcwd:用于获取当前的工作目录。

#include <unistd.h>
char *getcwd(char *buf, size_t size);

改变当前工作目录
  1.chdir:用于改变当前的工作目录。

#include <unistd.h>
int chdir(const char *path);

stat函数
在Linux系统编程中,stat函数用于获取指定文件或符号链接的状态信息。这些信息包括文件的大小、类型、权限、最后访问时间、最后修改时间和最后状态改变时间等。stat函数的信息被存储在一个struct stat结构体中,程序员可以通过分析这个结构体来获取文件的详细元数据。
stat函数的原型和使用方法
stat函数的原型定义在sys/stat.h头文件中,其基本形式如下:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>int stat(const char *pathname, struct stat *buf);

这里,pathname参数是一个指向文件路径的字符串,buf参数是一个指向struct stat结构体的指针,该结构体将被填充以包含文件的状态信息。如果函数调用成功,它返回0;如果失败,返回-1,并设置全局变量errno以指示错误原因。
struct stat结构体的成员及其含义
struct stat结构体包含了多个成员,每个成员都代表了文件的不同状态信息。以下是一些关键成员及其含义:
  1.st_dev:文件所在设备的ID。
  2.st_ino:文件的inode节点编号。
  3.st_mode:文件的类型和权限。
  4.st_nlink:文件的硬链接数。
  5.st_uid、st_gid:文件所有者的用户ID和组ID。
  6.st_size:文件的大小(以字节为单位)。
  7.st_atime、st_mtime、st_ctime:文件的最后访问时间、最后修改时间和最后状态改变时间。

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

相关文章:

  • 江协科技51单片机学习- p31 LCD1602液晶屏驱动
  • Android SurfaceFlinger——渲染完成帧显示(四十八)
  • ABAP+json格式数据转换时参数为空没传值
  • Flink中上游DataStream到下游DataStream的内置分区策略及自定义分区策略
  • 谁来做引领企业精益变革的舵手最合适?
  • 数据结构(java实现)——优先级队列,堆
  • 一部分优化算法
  • 图论(强联通分量)
  • LLaMA- Adapter V2: Parameter-Efficient Visual Instruction Model
  • 【爬虫实战】利用代理爬取Temu电商数据
  • 【MATLAB源码-第244期】基于MATLAB的BP神经网络语音特征信号分类,输出原信号与预测信号对比图以及预测误差和正确率。
  • HarmonyOS 习题(二)
  • 如何搭建一个圈子社区系统?开源社交陪玩交友圈子论坛帖子系统保姆级搭建教程!
  • Delphi5实现身份证检验(DLL版)
  • linux下的C++程序
  • selfAttention 中的dk到底是什么
  • 安装MongoDB UI客户端工具:mongodb-compass-1.40.2-win32-x64.msi
  • 一行命令搞定内网穿透
  • C语言——扫雷游戏
  • 【LLM】-16-评估LLM-与标准答案的差距
  • WeNet 2.0:更高效的端到端语音识别工具包
  • 阿里大模型调用 = 》通义千问大语言模型
  • idea使用free流程,2024idea免费使用
  • 算法_链表专题---持续更新
  • 在Windows MFC\C++编程中,如何使用OnCopyData函数
  • 【Qt】项目代码
  • MySQL中常用工具
  • 关于儿童编程语言
  • [io]进程间通信 -信号函数 —信号处理过程
  • RoboDK的插件