文件和目录
文件和目录操作接口
函数 | |
int | open (const char *file, int flags,...) |
打开文件 | |
int | close (int fd) |
关闭文件 | |
int | read (int fd, void *buf, size_t len) |
读取数据 | |
int | write (int fd, const void *buf, size_t len) |
写入数据 | |
int | rename (const char *old, const char *new) |
重命名 | |
int | unlink (const char *pathname) |
删除文件 | |
int | stat (const char *file, struct stat *buf) |
取得状态 | |
int | fstat (int fildes, struct stat *buf) |
取得文件状态 | |
int | fsync (int fildes) |
同步文件数据到存储设备 | |
int | statfs (const char *path, struct statfs *buf) |
查询文件系统相关信息 | |
int | mkdir (const char *path, mode_t mode) |
创建目录 | |
int | rmdir (const char *pathname) |
删除目录 | |
DIR * | opendir (const char *name) |
打开目录 | |
struct dirent * | readdir (DIR *d) |
读取目录 | |
long | telldir (DIR *d) |
获取目录流的读取位置 | |
void | seekdir (DIR *d, off_t offset) |
设置下次读取目录的位置 | |
void | rewinddir (DIR *d) |
重设目录流的读取位置为开头位置 | |
int | closedir (DIR *d) |
关闭目录 | |
int | access (const char *path, int amode) |
检查文件是否存在 | |
详细描述
文件和目录操作接口
函数说明
int open | ( | const char * | file, |
int | flags, | ||
... | |||
) |
打开文件
此函数是POSIX兼容版本,它将打开文件并根据指定的标志返回文件描述符。
- 参数
file 打开或创建的文件名 flags 指定打开文件的方式
当前支持的打开方式有以下几种:
flags | 描述 |
---|---|
O_RDONLY | 只读方式打开 |
O_WRONLY | 只写方式打开 |
O_RDWR | 以读写方式打开 |
O_CREAT | 如果要打开的文件不存在,则建立该文件 |
O_APPEND | 当读写文件时会从文件尾开始移动,也就是说写入的数据会以附加的方式添加到文件的尾部。 |
O_TRUNC | 如果文件已经存在,则清空文件中的内容 |
- 返回
- 成功则返回打开文件描述符, 失败则返回-1,错误代码将存入当前线程的errno中。
- 示例:
- opendir_sample.c , 以及 readwrite_sample.c.
int close | ( | int | fd | ) |
关闭文件
此函数是POSIX兼容版本,它将关闭指定的文件。
- 参数
fd 文件描述符
- 返回
- 成功 0,失败 -1,错误代码将存入当前线程的errno中。
int read | ( | int | fd, |
void * | buf, | ||
size_t | len | ||
) |
读取数据
该函数接口会把参数fd 所指的文件的len 个字节读取到buf 指针所指的内存中, 文件的读写位置会随读取到的字节移动。
- 参数
fd 文件描述符 buf 读取数据将要写入的缓存地址指针 len 读取文件的字节数
- 返回
- 实际读取到的字节数。 有两种情况会返回0值,一是读取数据已到达文件结尾, 二是无可读取的数据(例如设定len为0)。读取失败则返回-1,错误代码将存入当前线程的errno中。
int write | ( | int | fd, |
const void * | buf, | ||
size_t | len | ||
) |
写入数据
函数接口会把buf 指针所指向的内存中len 个字节写入到参数fd 所指向的文件内, 文件的读写位置会写入的字节移动。
- 参数
fd 文件描述符 buf 预写入数据的地址指针 len 预写入文件的字节数
- 返回
- 实际写入文件的字节数,失败则返回-1,错误代码将存入当前线程的errno中。
int rename | ( | const char * | old, |
const char * | new | ||
) |
重命名
该函数会将参数old 所指定的文件名称改为参数new 所指的文件名称。若new 所指定的文件已经存在,则该文件将会被覆盖。
- 参数
old 旧文件名 new 新文件名
- 返回
- 0 成功,-1 失败,错误代码将存入当前线程的errno中。
- 注解
- : 旧文件名和新文件名必须属于同一文件系统。
- 示例:
- rename_sample.c.
int unlink | ( | const char * | pathname | ) |
删除文件
该函数可删除指定目录下的文件。
- 参数
pathname 指定删除文件的绝对路径
- 返回
- 0 成功,-1 失败,错误代码将存入当前线程的errno中。
int stat | ( | const char * | file, |
struct stat * | buf | ||
) |
取得状态
调用此函数可获得文件状态。
- 参数
file 文件名 buf 结构指针,指向一个存放文件状态信息的结构体
- 返回
- 0 成功,-1 失败,错误代码将存入当前线程的errno中。
- 示例:
- stat_sample.c.
int fstat | ( | int | fildes, |
struct stat * | buf | ||
) |
取得文件状态
该函数用来将参数fildes所指的文件状态,复制到参数buf所指的结构中(struct stat)。
- 参数
fildes 已打开的文件的文件描述符 buf 结构指针,指向一个存放文件状态信息的结构体
- 返回
- 成功则返回0,失败返回-1,错误代码将存入当前线程的errno中。
- 注解
- 本函数与 stat() 函数相似,不同的是,它是作用于已打开的文件的文件描述符而不是文件名。
int fsync | ( | int | fildes | ) |
同步文件数据到存储设备
该函数可以同步内存中所有已修改的文件数据到储存设备。
- 参数
fildes 文件描述符
- 返回
- RT_EOK 同步文件成功,-RT_ERROR 同步文件失败
int statfs | ( | const char * | path, |
struct statfs * | buf | ||
) |
查询文件系统相关信息
- 参数
path 需要查询信息的文件系统的文件路径名 buf 用于储存文件系统相关信息的结构体指针
- 返回
- 成功 0,失败 -1,错误代码将存入当前线程的errno中。
int mkdir | ( | const char * | path, |
mode_t | mode | ||
) |
创建目录
- 参数
path 目录的绝对地址 mode 创建模式,当前未启用,填入默认参数0x777即可。
- 返回
- 成功 0,失败 -1,错误代码将存入当前线程的errno中。
int rmdir | ( | const char * | pathname | ) |
删除目录
- 参数
pathname 需要删除目录的绝对路径
- 返回
- 成功 0,失败 -1,错误代码将存入当前线程的errno中。
DIR* opendir | ( | const char * | name | ) |
打开目录
- 参数
name 目录的绝对地址
- 返回
- 打开文件成功,返回指向目录的DIR结构指针, 失败则返回 NULL。
struct dirent* readdir | ( | DIR * | d | ) |
读取目录
该函数用来读取目录,每读取一次目录,目录流的指针位置将自动往后递推1个位置。
- 参数
d 目录路径名
- 返回
- 读取成功返回保存目录信息的结构体指针,读取失败则返回NULL。
- 示例:
- readdir_sample.c , 以及 tell_seek_dir_sample.c.
long telldir | ( | DIR * | d | ) |
获取目录流的读取位置
该函数的返回值记录着一个目录流的当前位置,此返回值代表距离目录文件开头的 偏移量,返回值返回下个读取位置。你可以在随后的seekdir() 函数调用中利用这个值 来重置目录扫描到当前位置。也就是说telldir() 函数可以和seekdir() 函数配合使用, 重新设置目录流的读取位置到指定的偏移量。
- 参数
d 目录路径名
- 返回
- 读取位置的偏移量
void seekdir | ( | DIR * | d, |
off_t | offset | ||
) |
设置下次读取目录的位置
该函数用来设置参数d目录流目前的读取位置,在调用readdir() 时便从此新位置开始读取。
- 参数
d 目录路径名 offset 偏移值,距离本次目录的位移
void rewinddir | ( | DIR * | d | ) |
重设目录流的读取位置为开头位置
该函数可以用来设置 d 目录流目前的读取位置为目录流的初始位置。
- 参数
d 目录路径名
int closedir | ( | DIR * | d | ) |
关闭目录
该函数用来关闭一个目录,该函数必须和opendir() 函数成对使用。
- 参数
d 目录路径名
- 返回
- 成功 0,失败 -1,错误代码将存入当前线程的errno中。
int access | ( | const char * | path, |
int | amode | ||
) |
检查文件是否存在
该函数将根据amode中包含的位模式检查由path参数指向的路径名所指定的文件。
- 参数
path 指定的文件/目录路径 amode 该值可以是要检查的访问权限(R_OK,W_OK,X_OK)或存在测试(F_OK)
- 返回
- 允许访问请求,则返回0; 否则返回-1。