2 tianbiandetianbian tianbiandetianbian 于 2017.09.04 21:50 提问

java IO流的输出字节流为什么在写入数据后不用刷新

java IO流的输出字符流在写入操作后,需要刷新,为什么输出字节流中在写入数据后不用刷新?

3个回答

zy841958835
zy841958835   Ds   Rxr 2017.09.05 08:54
已采纳

如果强调实时性 应该是都需要的 只不过字节流的缓冲区小

服务器通过输出流向客户端响应了一个300字节的信息,但是,这时的输出流有一个1024字节的缓冲区。所以,输出流就一直等着WEB服务器继续向客户端响应信 息,当WEB服务器的响应信息把输出流中的缓冲区填满时,这时,输出流才向WEB客户端响应消息。
为了解决这种尴尬的局面,flush()方法出现了。flush()方法可以强迫输出流(或缓冲的流)发送数据,即使此时缓冲区还没有填满,以此来打破这种死锁的状态。
当我们使用输出流发送数据时,当数据不能填满输出流的缓冲区时,这时,数据就会被存储在输出流的缓冲区中。如果,我们这个时候调用关闭(close)输出流,存储在输出流的缓冲区中的数据就会丢失。所以说,关闭(close)输出流时,应先刷新(flush)换冲的输出流,话句话说就是:“迫使所有缓冲的输出数据被写出到底层输出流中”

caozhy
caozhy   Ds   Rxr 2017.09.05 08:52

按理来说,所有的流都应该设计为不要刷新,因为这是最简洁最自然的。
之所以有些流需要刷新,是因为存在缓冲机制,用来优化性能。如果流不需要刷新,就说明它没有这种优化的必要。

longlong3207
longlong3207   2017.09.05 11:51

我同意 pluie-cloud 的说法,同时我补充一些,比如一个汉字是两个字节,如果读了一个字节就立马flush的话这个字没读完整,所以字符流用到
了缓冲技术,读完一个完整地字符才刷新,而字节不用

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
字符流需要刷新动作,字节流不需要刷新
http://bbs.itheima.com/thread-111331-1-1.html 字符流按字符操作,字节流按字节操作。 字符流一样用的字节,有缓冲区,字符流需要刷新动作,字节流不需要刷新
Java之IO流---字节流
1.概述 1.1 IO流的引入 IO流在很多语言已有体现,诸如C语言的stdio.h,C++中的iostream。Java中的IO流大抵是用于在控制台、磁盘、内存上进行数据的读写操作,完成数据的传递。 我们可以对它进行如下分类: 按处理的数据类型可分为字节流(byte)与字符流(char) 按流的流向可分为输入流(in)与输出流(out) 按流的功能可分为节点流(Node)和...
IO流上:概述、字符流、缓冲区(java基础)
一、IO流概述 概述:          IO流简单来说就是Input和Output流,IO流主要是用来处理设备之间的数据传输,java对于数据的操作都是通过流实现,而java用于操作流的对象都在IO包中。 分类:         按操作数据分为:字节流和字符流。 如:Reader和InpurStream         按流向分:输入流和输出流。如:InputStream和Outp
Java 输出流中的flush方法
java中的IO流中的输出流一般都有flush这个操作,这个操作的作用是强制将缓存中的输出流(字节流,字符流等)强制输出。为什么会有这么个方法啊?因为输出流在进行输出时,比如像某个文件中写入内容,其实是先将输出流写入到缓冲区,当缓冲区写满后才将缓冲区的内容输出到文件中。但是当主机完成输出流的输出后,有可能缓冲区这个时候还没有被填满,这样的话,就会一直等待主机发送内容,这时候,就可以使用flush将缓
Java基础知识IO流(字节流File读取操作)
字节流 操作文件的字节流 主要的操作方法 字节流不需要flush,为什么? 字节流的available()方法 例子 练习 字节流操作字节数据时,使用字节流。 InputStream(读)此抽象类是表示字节输入流的所有类的超类。 方法摘要 int available() 返回此输入流下一个方法调用可以不受阻塞地从此输入流读取(或跳过)的估计字节数。 void
java io 学习之三 字符流的缓冲区
/** 字符流的缓冲区 缓冲区的出现,提高了对数据的读写效率 对应的类: BufferedWriter BufferedReader 缓冲区要结合流才可以使用 缓冲区是在流的基础上对流的功能进行增强   软件的优化可以分为:设计优化和性能优化 设计优化:对代码进行重构,让代码实现更强的可扩展性和灵活性,复用性。 提高性能最常用的的手段是:缓冲区  线程池   Bu
【Java基础知识】IO流--字节流读写数据以及复制文件的几种方式
1、IO的分类A、按照流向【参照物JVM】 输入流 : 读取数据 输出流 : 写出数据 B、按照数据类型 (1)字节流 a、字节输入流 读取数据 InputStream b、字节输出流 写出数据 OutputStream (2)字符流 a、字符输入流 读取数据 Read
Java基础:IO流之字节流和字符流
一、流的概念流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出
使用java的IO字节流拷贝图片
需求: 拷贝一张图片。 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class CopyImage { public static void main(String[] args) th
IO继承关系、字节流和字符流
在Java中,可从中读出一系列数据的对象称为“输入流(InputStream)”,而能向其中写入一系列数据的对象称为“输出流(OutputStream)”。Java的输出/输入都是通过继承抽象类InputStream和OutputStream(面向字节)、Reader和writer(面向字符)