2 hgq0916 hgq0916 于 2016.01.15 20:48 提问

关于Java字节流的困惑

书上讲字节流在操作时不会用到缓冲区,可是OutPutStream类中却有一个刷新缓冲区的方法flush,这是为什么?

2个回答

caozhy
caozhy   Ds   Rxr 2016.01.15 21:27
已采纳

从基类继承的。好比母鸡不会飞为什么有翅膀

java.io.OutputStream.flush() 方法刷新此输出流并强制将所有缓冲的输出字节被写出。刷新的常规协定是,调用它是一个迹象表明,如果以前写的任何字节都被缓冲的输出流的实现,如字节应立即写入到它们的目的地。

此流的预期目标是由底层的操作系统,例如一个文件,然后刷新流保证提供了一个抽象只是先前写入的字节流传递给操作系统进行写入;它并不能保证他们实际上写的是一个物理设备,如磁盘驱动器。

OutputStream中的flush方法不执行任何操作。

说的很清楚

Evankaka
Evankaka   Ds   Rxr 2016.01.15 23:59

书上可能写得有误,传统的java io都会用到缓冲区的,数据从硬盘读到内存缓冲区,然后程序内存空间再读或写。
NIO才是没有用到缓冲区,可以看下笔者之前整理的:http://blog.csdn.net/evankaka/article/details/48464013

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!