Linux学习----笔记初识Linux----文件属性&目录操作

文件属性

一、文件属性
  1. 属性描述结构体
    struct stat {
    dev_t st_dev; /如果是设备,返回文件使用的设备号,否则为 0/
    ino_t st_ino; /* 索引节点号 /
    mode_t st_mode; /
    文件类型 /
    nlink_t st_nlink; /
    文件的硬连接数 /
    uid_t st_uid; /
    所有者用户识别号*/
    gid_t st_gid; /* 组识别号 /
    dev_t st_rdev; /
    设备类型*/
    off_t st_size; /* 文件大小,字节表示 /
    blksize_t st_blksize; /
    系统每次按块Io操作时块的大小(一般是512或1024)/
    blkcnt_t st_blocks; /块的索引号 /
    time_t st_atime; /
    最后访问时间,如read
    /
    time_t st_mtime; /
    最后修改时间*/
    time_t st_ctime; /* 创建时间 */
    };
  2. 获取属性
  • stat

    • 功能:提供文件名字,获取文件对应属性。
    • 函数原型:int stat(const char *path,struct stat *buf)(第一个参数为传入的文件,第二个参数为属性)(文件不打开执行stat)
    • 所属头文件:<sys/types.h>、<sys/stat.h>、<unistd.h>
    • 参数:path:文件路径 buf:返回文件的文件信息
    • 返回值:成功返回0,失败返回-1
  • fstat

    • 功能:通过文件描述符获取文件对应的属性。
    • 函数原型:int fstat(int fds,struct stat *buf)(第一个参数为传入的文件描述符,第二个参数为属性)(文件打开后才能执行fstat)
    • 所属头文件:<sys/types.h>、<sys/stat.h>、<unistd.h>
    • 参数: fds:文件描述符 buf:返回文件的信息,
    • 返回值:成功返回0,失败返回-1
  • lstat

    • 功能:连接文件描述名,获取文件属性。
    • 函数原型:int lstat(const char *path,struct stat *buf)
    • 所属头文件:<sys/types.h>、<sys/stat.h>、<unistd.h>
    • 参数:path:文件路径 buf:返回文件的文件信息,针对符号链接,返回链接本身,而不是非目标文件
    • 返回值:成功返回0,失败返回-1

    stat和lstat的作用完全相同都是取得参数file_name 所指的文件状态, 其差别在于, 当文件为符号连接时, lstat()会返回该链接本身的状态,而不是非目标文件。
    stat 和 fstat的差别:一个传递带路径的文件名或者目录名
    传递文件的描述符

  • access权限的核查

    • 功能:可检测当前用户(运行这个程序的用户)对
      某文件是否有某权限
    • 函数原型: int access(const char *pathname, int mode);
    • 所属头文件:<unistd.h>
    • 参数:pathname:文件或者是目录路径, mode
    • R_OK:测试读权限
    • W_OK:测试写权限
    • X_OK:测试执行权限
    • F_OK:测试文件是否存在
    • 返回值:若所有欲查核的权限都通过了检查则返回0值,表示成功,只要有一权限被禁止则返回-1
二、目录操作API

1.基本函数

  • mkdir创建目录
    • 功能:创建目录
    • 函数原型:int mkdir(const char *pathname, mode_t mode);
    • 所属头文件: <sys/stat.h> <sys/types.h>
    • 参数:pathname:文件路径,mode:直接使用数字即可(权限)
    • 返回值:成功返回0,失败返回-1
  • rmdir == rm删除目录
    • 功能:删除目录
    • 函数原型:int rmdir(const char *pathname);
    • 所属头文件: <unistd.h>
    • 参数:要删除目录路径,你也可以直接写argv[1]
    • 返回值:成功返回0,失败返回-1
  • getcwd == pwd
    • 功能:获取当前目录
    • 函数原型: char *getcwd(char *buf, size_t size);
      char *get_current_dir_name(void);
      //char *getwd(char *buf);(最后一个不常用)
    • 所属头文件: <unistd.h>
    • 参数:buf:保存当前目录缓存区,size:buf最大为255字节
    • 返回值:成功返回指向当前目录的指针,和部分值一样,错误返回NULL
  • chdir == cd
    • 功能:修改当前目录,即切换目录,相当于 cd 命令
    • 函数原型:int chdir(const char *path);
    • 所属头文件: <unistd.h>
    • 参数:path:文件路径
    • 返回值:成功返回0,失败返回-1
  • chmod
    • 功能:更改权限
    • 函数原型:int chmod(const char *path, mode_t mode);
    • 所属头文件:#include <sys/types.h> #include <sys/stat.h>
    • 参数:path:文件路径 mode 权限
    • 返回值:成功返回0,失败返回-1
  1. 读取目录
  • struct dirent结构体
  • 存储目录中的文件信息(文件名、扩展名等等)
    #include <dirent.h>
    struct dirent
    {
    long d_ino; /* inode number 索引节点号 /
    off_t d_off; /
    offset to this dirent 在目录文件中的偏移 /
    unsigned short d_reclen; /
    length of this d_name 文件名长 /
    unsigned char d_type; /
    the type of d_name 文件类型 /
    char d_name [NAME_MAX+1]; /
    file name (null-terminated) 文件名,最长255字符 */
    }
  • opendir
    • 功能:打开目录
    • 函数原型:DIR *opendir(const char *name);
    • 所属头文件:#include <sys/types.h>#include <dirent.h>
    • 参数:目录的路径
    • 返回值:成功返回指向当前目录的指针,错误返回NULL
  • closedir
    • 功能:关闭目录
    • 函数原型:int closedir(DIR *dir);
    • 所属头文件:#include <sys/types.h>#include <dirent.h>
    • 参数:opendir返回的指针
    • 返回值:成功返回0,错误返回-1
  • readdir
    • 功能:读取目录信息
    • 函数原型:struct dirent *readdir(DIR *dir);
    • 所属头文件:#include <sys/types.h>#include <dirent.h>
    • 参数:打开目录后返回的文件指针
    • 返回值:成功返回指向dirp的指针dirent,错误返回NULL
  • rewinddir
    • 功能:重新定位到目录文件的头部
    • 函数原型:void rewinddir(DIR *dir);
    • 所属头文件:#include <sys/types.h>#include <dirent.h>
    • 参数:打开目录后返回的文件指针
  • seekdir
    • 功能:设置参数dir 目录流目前的读取位置, 在调用readdir()时便从此新位置开始读取. 参数offset 代表距离目录文件开头的偏移量。
    • 函数原型:void seekdir(DIR *dir,off_t offset);
    • 所属头文件:#include <sys/types.h>#include <dirent.h>
    • 参数:打开目录后返回的文件指针, offset :代表距离目录文件开头的
      偏移量
    • 返回值:无
  • rewinddir
    • 功能:取得目录流的读取位置
    • 函数原型:off_t telldir(DIR *dir);
    • 所属头文件:#include <sys/types.h>#include <dirent.h>
    • 参数:打开目录后返回的文件指针
    • 返回值:成功返回距离目录文件开头的偏移量返回值返回下个读取位置, 有错误发生时返回-1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值