文件和目录 目录的入口形式 目录操作 工作目录 基本文件的创建 特殊文件创建 文件的移动 opendir closedir umask getcwd chdir open mkdir unlink
文件和目录
目录的入口形式
头文件<dirent.h>定义了一个结构和目录程序用到的类型,没有确定的文件内部格式
Readdir()返回了一个指针指向一个类型对象 struct dirent
目录操作
#include <sys/types.h>
#include <dirent.h>
//根据 dirname 打开一个目录流
dir *opendir(const char *dirname);
//返回一个指针,它指向一个目录流中当前位置的目录入口
//目录流由 dirp 指向
struct dirent *readdir(dir *dirp);
//重置目录流的位置到目录的起点
void rewinddir(dir *dirp);
//关闭目录流,成功: 返回0
int closedir(dir *dirp);
工作目录
改变当前的工作目录
//使命名的目录成为当前的工作目录
//path:指向目录的路径名
int chdir(const char *path);
获得工作目录路径名
//复制当前工作目录的绝对路径名到 buf 所指向的队列中
char *getcwd(char *buf, size_t size);
基本文件的创建
打开一个文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//文件和文件描述符之间建立了一个连接,它创建了一个指向一个文件的打开文件描述
//path: 指向文件的路径名
int open(const char *path, int oflag, ...);
创建一个新文件或者重写一个已经存在的文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//creat = open(path,o_wronly|o_creat|o_trunc,mode)
int creat(const char *path, mode_t mode);
设置文件的创建标记
#include <sys/types.h>
#include <sys/stat.h>
//设置进程的文件模式创建标记到 cmask,并返回原来的标记值
mode_t umask(mode_t cmask);
连接到一个文件
/*
*existing: 指向路径名来命名存在文件
*new: 指向一个路径名,它命名了一个创建的新的目录入口
*已存在的文件自动的创建一个新的连接,并将文件连接数加 1
*/
int link(const char *exising, const char *new);
特殊文件创建
生成一个目录
#include <sys/types.h>
#include <sys/stat.h>
//path: 创建一个新的目录
//新目录的允许位根据 mode 初始化
int mkdir(const char *path, mode_t mode);
创建一个 FIFO 类型的文件
#include <sys/types.h>
#include <sys/stat.h>
//创建一个新的 fifo 类型文件,它由 path 指向的路径名命名
int mkfifo(const char *path, mode_t mode);
文件的移动
移动目录入口
//移去由 path 指向得路径名所命名得连接, 并将连接数减去 1
int unlink(const char *path);
移去一个目录
int rmdir(const char *path);
重命名一个文件
/*改变一个文件的名字
* old: 指向被重命名文件的路径名
* new: 指向文件的新路径名
*/
int rename(const char *old, const char *new);