目录
一、关于文件和进程关系的简介
1.文件 = 文件内容 + 文件属性 即使空文件也有属性,由此得知,空文件也有大小
2.我们如果想访问文件,第一步都是要打开它,想要修改文件,都要通过执行代码以进程的方式完成修改
3.我们的CPU只能访问内存,因此文件必须被加载到内存中才能访问
4.一个进程可以打开多个文件,在一定时间内,系统会存在多个进程,但可能同时会存在更多被打开的文件,我们的系统是如何对这些文件进行管理的呢?
5.系统中是不是所有的文件都被进程打开了(内存文件)?并不是,没有被打开的文件在磁盘中(磁盘文件)
6.根据操作系统对文件先描述在组织的理论,我们可以猜测,操作系统内核中一定要有描述被打开文件的结构体,并用其定义
二、了解文件操作的系统接口和C语言文件操作接口
1.C语言文件操作接口
下面只是简单介绍几种常用接口,如想详细了解可以看(C语言文件接口详解)
1.打开关闭文件
FILE * fopen ( const char * filename, const char * mode );
mode表⽰⽂件的打开模式常见如:
以w方式打开文件,该文件会被文件清空
2.读取文件
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
从stream指向的文件中读取数据到ptr指向的数组中。size是每个元素的大小(以字节为单位),nmemb是要读取的元素数量。函数返回成功读取的元素数量。
int fscanf(FILE *stream, const char *format, ...);
从stream指向的文件中按照format指定的格式读取数据,并将数据存放到后续的参数中。成功时返回成功读取并赋值的输入项数量,失败时或到达文件末尾时返回EOF。
char *fgets(char *str, int n, FILE *stream);
从stream指向的文件中读取一行数据,并将其存储在str指向的数组中。n是数组的大小,用于限制读取的字符数(包括最后的空字符\0)。成功时返回指向str的指针,失败时或到达文件末尾时返回NULL。
3.写入文件
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
将ptr指向的数组中的数据写入到stream指向的文件中。size是每个元素的大小