一、获取当前工作目录
包含头文件:<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。