文件缓冲区
创始人
2024-01-20 15:12:42
0

在这里插入图片描述

本期介绍🍖
主要介绍:什么是文件缓冲区,文件缓冲区存在的意义是什么,文件缓冲区的证明👀。


一、什么是文件缓冲区

  每一个正在使用的文件,操作系统都会为其在内存中开辟一块区域,称之为:文件缓冲区。每当我们想从内存向硬盘中输出数据,都会先将数据输送到缓冲区中,然后装满缓冲区后才一起输送到硬盘上。如果想从硬盘向计算机内读入数据,则会先将读到的数据输送到缓冲区中,装满缓冲区后再逐个将数据输送到程序数据区(内存中的变量)。如下图所示:

在这里插入图片描述

  注意:文件缓冲区的大小是由C语言编译系统来决定的。


二、文件缓冲区存在的意义

  文件缓冲区就是:读写文件时数据传输过程的一个中间环节。那有人就要问了:内存中的数据难道不因该是直接输出到外存上去的吗,为什么中间还需要多一层文件缓冲区?那文件缓冲区存在的目的是什么呀?为什么文件缓冲区需要装满后再输送?

  先问大家一个问题:当我们用fwrite()这样的函数写数据时,难道真的光靠它就能将数据直接扔到文件里去了吗? 当然不是,像fwrite()这样的函数是要进行系统调用后才能将数据最终写到文件中去(所谓系统调用就是:由操作系统来代替我们去做一些事情,譬如代替我们写文件之类的)。既然我们在写数据的过程中,会让操作系统调用接口来替我们做一些事情,那么写数据这个操作就必然会打断操作系统。如果频繁的写数据,就譬如4个字节写一次,4个字节写一次,那么操作系统必然会被频繁的打断。操作系统啥事都不用干了,天天来服务你一个就够了!!!这是不现实的。

  所以为了不会因为频繁的操作而打断操作系统,我们会在内存中另外开辟一块空间,用于存放需要传输的数据,直到缓冲区被放满,再由操作系统一次性全部输送到硬盘中去。可以这么理解:文件缓冲区在写文件的时候提高整个操作系统的效率,在读文件的时候提高了程序的效率


三、证明文件缓冲区的存在

  下面让我们一起来看一个函数,证明文件缓冲区是真实存在的。代码如下:

#include
#includeint main()
{FILE* pf = fopen("test.txt", "w");fputs("abcdef", pf);//先将代码放在输出缓冲区printf("睡眠10秒——已经写数据了,打开test.txt文件,发现文件没有内容\n");Sleep(10000);printf("刷新缓冲区\n");fflush(pf);//刷新缓冲区时,才将缓冲区中的数据写到文件中去printf("睡眠10秒——此时再次打开test.txt文件,文件中有内容了\n");Sleep(1000);fclose(pf);pf = NULL;return 0;
}

在这里插入图片描述

  注意:flose()在关闭文件的时候也会刷新缓冲区。


在这里插入图片描述

这份博客👍如果对你有帮助,给博主一个免费的点赞以示鼓励欢迎各位🔎点赞👍评论收藏⭐️,谢谢!!!
如果有什么疑问或不同的见解,欢迎评论区留言欧👀。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...