问题描述
- 关于Java字节流的困惑
-
书上讲字节流在操作时不会用到缓冲区,可是OutPutStream类中却有一个刷新缓冲区的方法flush,这是为什么?
解决方案
从基类继承的。好比母鸡不会飞为什么有翅膀
java.io.OutputStream.flush() 方法刷新此输出流并强制将所有缓冲的输出字节被写出。刷新的常规协定是,调用它是一个迹象表明,如果以前写的任何字节都被缓冲的输出流的实现,如字节应立即写入到它们的目的地。
此流的预期目标是由底层的操作系统,例如一个文件,然后刷新流保证提供了一个抽象只是先前写入的字节流传递给操作系统进行写入;它并不能保证他们实际上写的是一个物理设备,如磁盘驱动器。
OutputStream中的flush方法不执行任何操作。
说的很清楚
解决方案二:
书上可能写得有误,传统的java io都会用到缓冲区的,数据从硬盘读到内存缓冲区,然后程序内存空间再读或写。
NIO才是没有用到缓冲区,可以看下笔者之前整理的:http://blog.csdn.net/evankaka/article/details/48464013
时间: 2024-10-30 05:36:42