首页 > 其他分享 >C语言目录文件操作补充

C语言目录文件操作补充

时间:2022-11-22 23:02:51浏览次数:51  
标签:文件 stat OK st mode time C语言 目录


 

本章节补充一些目录和文件操作的更多知识,因为这些知识涉及到时间操作,所以放在时间操作之后的章节中介绍。

access库函数

access函数用于判断当前操作系统用户对文件或目录的存取权限。

包含头文件:

#include <unistd.h>

函数声明:

int access(const char *pathname, int mode);

参数说明:

pathname文件名或目录名,可以是当前目录的文件或目录,也可以列出全路径。

mode 需要判断的存取权限。在头文件unistd.h中的预定义如下:

#define R_OK 4     // R_OK 只判断是否有读权限

#define W_OK 2    // W_OK 只判断是否有写权限

#define X_OK 1     // X_OK 判断是否有执行权限

#define F_OK 0     // F_OK 只判断是否存在

返回值:

当pathname满足mode的条件时候返回0,不满足返回-1。

在实际开发中,access函数主要用于判断文件或目录是否是存在。

stat库函数

1、stat结构体

struct stat结构体用于存放文件和目录的状态信息,如下:

struct stat

{

dev_t st_dev;   // device 文件的设备编号

ino_t st_ino;   // inode 文件的i-node

mode_t st_mode;   // protection 文件的类型和存取的权限

nlink_t st_nlink;   // number of hard links 连到该文件的硬连接数目, 刚建立的文件值为1.

uid_t st_uid;   // user ID of owner 文件所有者的用户识别码

gid_t st_gid;   // group ID of owner 文件所有者的组识别码

dev_t st_rdev;  // device type 若此文件为设备文件, 则为其设备编号

off_t st_size;  // total size, in bytes 文件大小, 以字节计算

unsigned long st_blksize;  // blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.

unsigned long st_blocks;  // number of blocks allocated 占用文件区块的个数, 每一区块大小为512 个字节.

time_t st_atime;  // time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、 utime、read、write 与tructate 时改变.

time_t st_mtime;  // time of last modification 文件最后一次被修改的时间, 一般只有在用mknod、 utime 和write 时才会改变

time_t st_ctime;  // time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、 权限被更改时更新

};

struct stat结构体的成员变量比较多,对程序员来说,重点关注st_mode、st_size和st_mtime成员就可以了。注意st_mtime是一个整数表达的时间,需要程序员自己写代码转换格式。

st_mode成员的取值很多,或者使用如下两个宏来判断。

S_ISREG (st_mode) 是否为一般文件

S_ISDIR (st_mode) 是否为目录

2、stat库函数

包含头文件:

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

函数声明:

int stat(const char *path, struct stat *buf);

stat函数获取path指定文件或目录的信息,并将信息保存到结构体buf中,执行成功返回0,失败返回-1。

       示例(book145.c)

       

C语言目录文件操作补充_access

       运行结果

       

C语言目录文件操作补充_C++语言_02

utime库函数

       utime函数用于修改文件的存取时间和更改时间。

       包含头文件:

       #include <utime.h>

       函数声明:

       int utime(const char *filename, const struct utimbuf *times);

       函数说明:utime()用来修改参数filename 文件所属的inode 存取时间。如果参数times为空指针(NULL), 则该文件的存取时间和更改时间全部会设为目前时间。结构utimbuf 定义如下:

       struct utimbuf

       {

         time_t actime;

         time_t modtime;

       };

       返回值:执行成功则返回0,失败返回-1。

rename库函数

       rename函数用于重命名文件或目录,相当于操作系统的mv命令,对程序员来说,在程序中极少重命名目录,但重命名文件是经常用到的功能。

       包含头文件:

       #include <stdio.h>

       函数声明:

       int rename(const char *oldpath, const char *newpath);

       参数说明:

       oldpath 文件或目录的原名。

       newpath 文件或目录的新的名称。

       返回值:0-成功,-1-失败。

remove库函数

       remove函数用于删除文件或目录,相当于操作系统的rm命令。

       包含头文件:

       #include <stdio.h>

       函数声明:

       int remove(const char *pathname);

       参数说明:

       pathname 待删除的文件或目录名。

       返回值:0-成功,-1-失败。

 

版权声明

作者:码农有道

如果文章有错别字,或者内容有误,或其他的建议或意见,请您留言指正,非常感谢!!!

标签:文件,stat,OK,st,mode,time,C语言,目录
From: https://blog.51cto.com/u_13748800/5878711

相关文章

  • C语言常量和变量
     一切都是数据    对计算机来说,图片、文字、音乐、视频等都是数据,在计算机中以二进制的0和1存储,数据量越大,0和1就越多。    数据分为静态数据和动态数据。 ......
  • C语言程序的基本结构
    文章目录​​一、C语言基础知识的学习方法​​​​二、C语言程序开发的流程​​​​三、安装C语言的编译器​​​​四、C程序的基本结构​​​​1、程序的注释​​​​2、预......
  • C语言常量、变量和关键字
    文章目录​​一、一切都是数据​​​​1、静态数据​​​​2、动态数据(临时数据)​​​​二、常量​​​​三、变量​​​​1、整数型、字符型、浮点型变量​​​​2、字符串......
  • C语言运算符
    文章目录​​一、C语言的运算符​​​​二、算术运算符​​​​三、赋值运算符​​​​四、sizeof运算符​​​​五、运算符的优先级​​​​六、获取视频教程​​​​七、......
  • C语言输入和输出
    文章目录​​一、数据输入​​​​二、数据输出​​​​三、断章取义​​​​四、printf输出​​​​1、输出描述性的文字​​​​2、输出整数​​​​3、输出字符​​​​4......
  • C语言if分支结构
    文章目录​​一、关系运算符​​​​二、条件判断​​​​三、只使用if语句​​​​四、多个ifelse语句​​​​五、if语句的嵌套​​​​六、保持良好的编程习惯​​​​......
  • C语言循环
    文章目录​​一、程序结构​​​​二、while循环​​​​三、dowhile循环​​​​四、循环的跳转​​​​五、while循环的应用​​​​六、for循环​​​​七、for循环嵌套......
  • C语言switch分支结构
    文章目录​​一、ifelse的不足​​​​二、switch语句​​​​三、注意事项​​​​四、课后作业​​​​五、获取视频教程​​​​六、版权声明​​一、ifelse的不足C语......
  • C语言数组
    文章目录​​一、数组​​​​二、占用内存的大小​​​​三、数组的初始化​​​​四、注意事项​​​​五、在for循环中数组​​​​六、二维数组​​​​七、多维数组​......
  • C语言函数
    文章目录​​一、函数的概念​​​​1、函数的概念​​​​2、函数的分类​​​​二、自定义函数的声明​​​​三、自定义函数的定义​​​​四、自定义函数代码的组织​​......