Linux目录操作

一、获取当前工作目录

​ 包含头文件:<unistd.h>

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

​ char *get_current_dir_name(void); //获取后需要通过free()函数释放内存

二、切换工作目录

​ 包含头文件:<unistd.h>

​ int chdir(const char *path);

​ 成功返回0,失败返回其他(目录不存在或没有权限)

三、创建目录

​ 包含头文件:<sys/stat.h>

​ int mkdir(const char *pathname, mode_t mode);

​ mode:访问权限,如0775

​ 成功返回0,失败返回其他(上级目录不存在或没有权限)

四、删除目录

​ 包含头文件:<unistd.h>

​ int rmdir(const char *path);

​ 成功返回0,失败返回其他(目录不存在或没有权限)

五、获取目录中文件列表

​ 包含头文件:<dirent.h>

​ 步骤1:opendir()打开目录

​ DIR *opendir(const char *pathname);

​ 成功返回目录地址,失败返回空

​ 步骤二:readdir()读取目录

​ struct dirend *readdir(DIR *dirp);

​ 失败返回空指针

​ 步骤三:closedir()关闭目录

​ int closedir(DIR *dirp);

struct dirent
{
    long d_ino;         //inode number索引节点号
    off_t d_off;        //在目录文件中的偏移
    unsigned short d_reclen; //文件名长度
    unsigned char d_type;    //文件类型
    char d_name[NAME_MAX+1]; //文件名
}

​ d_type有多种取值,最重要的是8和4,8-常规文件,4-目录

六、access()库函数

​ access()函数用于判断当前用户对目录或文件的存取权限

​ 包含头文件:<unistd.h>

​ 函数声明:int access(const char *pathname, int mode);

​ mode:需要判断的存取权限,头文件<unistd.h>中的预定义如下:

​ #define R_OK 4 //读权限

​ #define W_OK 2 //写权限

​ #define X_OK 1 //执行权限

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

​ 当满足mode的条件时返回0,不满足返回-1,errno被设置。

七、stat()库函数

struct stat
{
    dev_t st_dev;    //文件的设备编号
    ino_t st_ino;    //文件的i-node
    mode_t st_mode;  //文件的类型和存取权限
    nlink_t st_nlink; //连到该文件的硬连接数目,初始值为1
    uid_t st_uid;     //文件的所有者的用户识别码
    gid_t st_gid;     //文件所在组的识别码
    dev_t st_rdev;    //若此文件为设备文件,则为其设备编号
    off_t st_size;    //文件大小
    size_t st_blksize;  //I/O文件系统的IO缓冲区大小
    size_t st_blocks;   //占用文件区块的个数
    time_t st_atime;    //最近一次被存取或执行的时间
                        //mknod、utime、read、write、tructate时改变
    time_t st_mtime;    //最后一次被修改的时间
                        //mknod、utime、write时改变
    time_t st_ctime;    //最近一次更改时间,在所有者、组权限被更改时改变。
}

​ st_mode成员可以用两个宏来判断:

​ bool S_ISREG(st_mode) //是否为普通文件

​ bool S_ISDIR(st_mode) //是否为目录

​ 包含头文件:<sys/stat.h>

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

​ 成功返回0,失败返回-1且设置errno

八、utime()库函数

​ utime()函数用于修改目录或文件的时间

​ 包含头文件:<utime.h>

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

​ 若参数times为空指针,则设置为当前时间。

struct utimbuf
{
    time_t actime;
    time_t modtime;
}

​ 成功返回0,失败返回-1且设置errno。

九、rename()库函数

​ 重命名目录或文件

​ 包含头文件:<stdio.h>

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

​ 成功返回0,失败返回-1且设置errno。

十、remove()库函数

​ 删除目录或文件

​ 包含头文件:<stdio.h>

​ int remove(const char *pathname);

​ 成功返回0,失败返回-1且设置errno。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值