天天看点

网络编程(part4)--刷新缓冲区

鄙人学习笔记

文章目录

  • ​​刷新缓冲区​​
  • ​​举个例子1(行缓冲)​​
  • ​​举个例子2(只有把系统默认缓冲区大小写满,才会自动刷新)​​
  • ​​举个例子3(flush()刷新缓冲区)​​

刷新缓冲区

  • 缓冲区刷新函数
flush()      

该函数被调用后,会进行一次磁盘交互,将缓冲区中的内容写入到磁盘。

我们用下面的个例子,具体学习一下行缓冲和缓冲区函数的用法及作用。

举个例子1(行缓冲)

输入以下代码:

网络编程(part4)--刷新缓冲区

在控制台输入:

网络编程(part4)--刷新缓冲区

我们看一下,我们写入的文件test:

网络编程(part4)--刷新缓冲区

你没看错!是空的~

现在我们更改一下代码:

网络编程(part4)--刷新缓冲区

在控制台输入:

网络编程(part4)--刷新缓冲区

我们再看一下,我们写入的文件test:

网络编程(part4)--刷新缓冲区

以上结果论证了我们的理论:行缓冲在遇到换行符时,才会与磁盘进行交互。即在行缓冲模式下,数据从缓冲区写入磁盘的条件是:遇到换行符。

举个例子2(只有把系统默认缓冲区大小写满,才会自动刷新)

输入以下代码:

网络编程(part4)--刷新缓冲区

在控制台输入:

网络编程(part4)--刷新缓冲区

看一下文件test:

网络编程(part4)--刷新缓冲区

空的~~因为就这么几个字节,是不会把系统默认缓冲区写满的,我们退出循环,close一下文件对象,刷新一下缓冲区:

网络编程(part4)--刷新缓冲区

看一下文件test:

网络编程(part4)--刷新缓冲区

有数据啦~

那么有没有不用关闭文件,就可以立即刷新缓冲区的方法呢?有的呢,用flush函数就可以了!请看下面的例子。

举个例子3(flush()刷新缓冲区)

输入以下代码:

网络编程(part4)--刷新缓冲区

在控制台输入:

网络编程(part4)--刷新缓冲区