输入输出流为什么要用缓冲区?

原创 2002年07月15日 10:05:00

    这个问题我实在重读C++基本IO类的时候才认真考虑的(哎,当初上学时吃下去的东西,现在才开始销化)。我相信有很多人对这个问题一个非常清楚了,但是我也相信有很多人和我一样没有考虑过这个问题。现在我想把我的理解发表出来,欢迎大家批评。

    我想以一个例子说明,比如我想把一篇文章以字符序列的方式输出到计算机显示器屏幕上,那么我的程序内存作为数据源而显示器驱动程序作为数据目标,如果数据源直接对数据目标发送数据的话。数据目标获得第一个字符,便将它显示。然后从端口读取下一个字符,可是这时就不能保证数据源向端口发送的恰好是第二个字符(也许是第三个,而第二个已经在数据目标显示时发送过了)。这样的话就不能保证输出的数据能完整的被数据目标所接受并处理。

      为了解决这个问题,我们需要在数据源与数据目标中间放置一个保存完整数据内容的区域,那就是dangdangdangdang----“缓冲区”。这样的话, 数据源可以不考虑数据目标正在处理哪部分数据,只要把数据输出到缓冲区就可以了,数据目标也可以不考虑数据源的发送频率,只是从缓冲区中依次取出下一个数据。从而保证了数据发送的完整性,同时也提高了程序的效率。

      我说明白了吗?:)

Java缓冲区之输入输出流

Java缓冲区之输入输出流 --模范青蛙   下面我想通过一个例子来简单介绍一下流在缓冲区是怎么被读写的。InputStream OutputStream Reader Writer都是抽象类,他们本...
  • mo_fan_qing_wa
  • mo_fan_qing_wa
  • 2015年08月25日 12:58
  • 1224

Java输入输出流与缓冲区的使用

Input/Output流: 将外设中的数据读取到内存中就是输入。 将内存中的数据写入到外设中就是出。 I/O流就是用来处理设备间的数据传输。用于操作流的对象都放在IO包中。 流按操作方式分为...
  • fu755383249
  • fu755383249
  • 2014年10月17日 17:51
  • 2104

对C语言输入输出流和缓冲区的深入理解

导读:对C语言输入输出流和缓冲区的深入理解,C语言缓冲区(缓存)详解,缓冲区又称为缓存,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区,缓冲区根据其对应的是输入设备还是输出设备,分...
  • SHRDLU
  • SHRDLU
  • 2015年10月06日 10:08
  • 9909

白话java之带缓存的输入输出流详解

带缓存的输入输出流 缓存是IO的一种性能优化,缓存流为IO流增加了内存缓存区.有了缓存区,使得在流上执行skip(),market(),reset() 方法成为了可能--_--_-__--_===....
  • itguangit
  • itguangit
  • 2015年12月25日 14:43
  • 1829

Linux c学习--从标准输入输出看流和缓冲区

学习标准输入输出,我们都会遇到一个概念,流和缓冲区,但到底什么是流,什么是缓冲区呢?       书《C Primer Plus》上说,C程序处理一个流而不是直接处理文件。后面的解释十分抽象:『流(s...
  • zqixiao_09
  • zqixiao_09
  • 2015年12月09日 12:48
  • 2871

C 的输入输出流和缓冲区

C++的输入输出流和缓冲区 一、 C++ 输入输出的含义    以前所用到的输入和输出,都是以终端为对象的,即从键盘输入数据,运行结果输出到显示器屏幕上。从操作系统的角度看,每一个与主...
  • u011497904
  • u011497904
  • 2015年01月05日 22:11
  • 386

C++输入输出流缓冲区

为什么 fflush(stdin) 是错的 首先请看以下程序:#include int main( void ) { int i; for (;;) { fputs(...
  • haronchou
  • haronchou
  • 2017年03月01日 16:12
  • 163

java输入输出流

java输入输出流一、什么是IOjava中I/O操作主要指使用java进行输入、输出操作。java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。 java....
  • hulamua
  • hulamua
  • 2016年12月15日 09:51
  • 1033

C/C++ 输入输出缓冲区在Windows和Linux下对比

c++中cin、cout,cerr和c的stdin、stdout、stderr都是同步的,即iostream 对象和 and cstdio流是同步的,同步关系如下:同步即表明我们可以在程序中混合用co...
  • qq_20240999
  • qq_20240999
  • 2017年03月01日 10:04
  • 501

Java输入输出流总结

题目:把字符串"1,+,2,+,3,+,4,+,5,-,6,-,7,+,8,-,9"写入D盘,并且计算字符串的值,在控制台打印。 import java.io.File; import java.io...
  • tonehao1990
  • tonehao1990
  • 2015年06月08日 22:09
  • 634
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:输入输出流为什么要用缓冲区?
举报原因:
原因补充:

(最多只允许输入30个字)