赞
踩
关于BufferedInputStream 是java提供的具有缓存作用的字节输入流。与之对应的还有BufferedOutStream 和 BufferedRead 和BufferedWriter
这4个都是FilterOutStream的子类。该使用装饰者模式对基础的InputStream进行装饰,并提供了缓存作用。
关于缓冲数组的作用
由于CPU、内存、硬盘三者的速率不匹配,
我们知道,如果一个文件有10KB大小,我们使用byte[1024] 数组 每次读取1kb时,CPU需要进行10次的IO读取,CPU需要终端10次转而执行IO操作。
那么现在引入了BufferedInputStream后,由于这个类内置的缓冲字节数组byte[8192] 。所以当我们第一次调用read()方法时,这个类内部会调用fill()方法,将一次读取8192个字节到缓存数组中。那么我们后续再次调用read()方法时,会首先到缓冲数组中查找,如果数据已经加载到数组中了,那么我们就不需要执行IO中断到硬盘读取。从而提高了读取速率。
BufferedOutputStream同理, 当我们向IO设备(String 、byteArray、object、File)写入操作时, 数据会先写入到缓冲数组中。如果缓冲数组满了之后,才会刷新到实际的地方。 所以在我们文件写入结束后,需要手动关闭这个BufferedOutputStream().close().或者手动调用flush();
关于重复读写的作用
下面聊聊关于mark(readlimit)和reset()方法
==========&
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。