FilterInputStream是BufferedInputStream 的父类,而FilterInputStream继承自InputStream。 当我们使用write方法时,只是把内容写到缓冲区,而没有真正写到存储设备上,当调用了flush方法,也就是把缓冲区的内容刷新,这样才能写到到存储数据物理设备上。有些类没有明写有没有缓存,比如网络或设备操作的时候一些仅以OutputStream接口形式得到的流。个人觉得FilterInputStream 是有缓冲区的 (因为FilterOutputStream 有flush方法,他俩是一对嘛{:soso_e100:})。还有缓冲区就是为了解决速度不匹配问题,比如,高速的cpu与内存,内存与硬盘,cpu与io等速度不匹配的问题,而引人缓冲区,比如我们从磁盘里读取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中读取数据,等缓冲区的数据读取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度。缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据。它使得低俗的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU。解放出CPU,使其能够高效率工作。flush方法是为了强制输出缓冲区的数据,就是为了给带缓冲区的类用呗。个人知识有限,期待各位大侠指正。但是为什么你猜想flush不是java实现的呢? |