文件系统操作
Posted kele-dad
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件系统操作相关的知识,希望对你有一定的参考价值。
一、文件操作系统调用
1 /* 创建 2 * 参数: 3 * @filename:文件名 4 * @mode:指定新建文件的存取权限,它同 umask 一起决定文件的最终权限(mode & umask),umask 代表了文件在创建时需要去掉的一些存取权限。 5 * umask 可通过系统调用 umask() 来改变 6 */ 7 int creat(const char *filename, mode_t mode); 8 /* 该调用将 umask 设置为 newmask,然后返回旧的 umask,它只影响读、写和执行权限 */ 9 int umask(int newmask);
1 /* 文件打开,此函数有两种形式 2 * pathname 为要打开的文件名(包含路径名称,默认是在当前路径下) 3 * flags 为文件打开标志 4 * mode 为文件访问权限 5 */ 6 int open(const char *pathname, int flags); 7 int open(const char *pathname, int flags, mode_t mode);
flags 文件打开标志:
mode 文件访问标志:
1 /* 文件读写 2 * buff 为指向缓冲区的指针 3 * length 为缓冲区的大小(以字节为单位) 4 */ 5 int read(int fd, const void *buf, size_t length); //实现从文件描述符 fd 所指定的文件中读取 length 个字节到 buf 所在的缓冲区中,返回实际读取的字节数 6 int write(int fd, const void *buf, size_t length); //实现把 length 个字节从 buf 指向的缓冲区中写到文件描述符 fd 所指向的文件中,返回实际写入的字节数
1 /* 定位,随机指定位置进行读写,此函数将文件读写指针相对 whence 移动 offset 个字节,操作成功时,返回文件指针相对于文件头的位置 */ 2 int lseek(int fd, offset_t offset, int whence);
参数 whence 的值如下:
1 /* 关闭 */ 2 int close(int fd);
二、C库函数调用
1 /* 打开,用于打开指定文件,mode 为打开模式 */ 2 FILE fopen(const char *path, const char *mode);
打开模式的标志如下:
b 用于区分二进制文件和文本文件,但Linux中不区分二进制文件和文本文件
1 /* 读写 */ 2 int fgetc(FILE *stream); 3 int fputc(int c, FILE *stream); 4 char *fgets(char *s,int n, FILE *stream); 5 int fputs(const char *s,FILE *stream); 6 int fprintf(FILE *stream, const char *format, ...); 7 int fscanf(FILE *stream, const char *format, ...); 8 //实现从流(stream)中读取 n 个字段,每个字段为 size 个字节,并将读取的字段放入 ptr 所指的字符数组中,返回实际已读取的字段数 9 //当读取的字段数小于 num 时,可能是在函数调用时出现了错误,也可能是读到了文件末尾。因此要通过调用 feof() 和 ferror() 来判断 10 size_t fread(void *ptr, size_t size, size_t n, FILE *stream); 11 //实现从缓冲区 ptr 所指的数组中把 n 个字段写到流(stream)中,每个字段长为 size 个字节,返回实际写入的字段数 12 size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream); 13 14 /* 读写过程中的定位函数 */ 15 int fgetpos(FILE *stream, fpos_t *pos); 16 int fsetpos(FILE *stream, const fpos_t *pos); 17 int fseek(FILE *stream, long int offset, int whence);
1 /* 关闭 */ 2 int fclose(FILE *stream);
以上是关于文件系统操作的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程
VSCode自定义代码片段15——git命令操作一个完整流程
Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段
我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段