BufferedInputStream类详解

当创建BufferedInputStream时,将创建一个内部缓冲区数组。
当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次有多个字节。
mark操作会记住输入流中的一点,并且reset操作会导致从最近的mark操作之后读取的所有字节在从包含的输入流中取出新的字节之前重新读取。

BufferedInputStream 的父类是FilterInputStream
FilterInputStream的父类是InputStream(字节输入流的超类)

相对于 FileInputStream
,使用BufferedInputStream读资源比FileInputStream读取资源的效率高(BufferedInputStream的read方法会读取尽可能多的字节,执行read时先从缓冲区读取,当缓冲区数据读完时再把缓冲区填满。),因此,当每次读取的数据量很小时,FileInputStream每次都是从硬盘读入,而BufferedInputStream大部分是从缓冲区读入。读取内存速度比读取硬盘速度快得多,因此BufferedInputStream效率高,且FileInputStream对象的read方法会出现阻塞;BufferedInputStream的默认缓冲区大小是8192字节。当每次读取数据量接近或远超这个值时,两者效率就没有明显差别了。BufferedOutputStream和FileOutputStream同理,差异更明显一些。

public class BufferedInputStream
extends FilterInputStream

类中的缓冲数组大小是:
private static int DEFAULT_BUFFER_SIZE = 8192;

构造方法:

BufferedInputStream(InputStream in) 
创建一个 BufferedInputStream并保存其参数,输入流 in ,供以后使用。  
BufferedInputStream(InputStream in, int size) 
创建 BufferedInputStream具有指定缓冲区大小,并保存其参数,输入流 in ,供以后使用。  

所有方法:

int available() 
返回从该输入流中可以读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 
 
void close() 
关闭此输入流并释放与流相关联的任何系统资源。 
 
void mark(int readlimit) 
见的总承包 mark的方法 InputStream 。  

boolean markSupported() 
测试这个输入流是否支持 mark和 reset方法。 
 
int read() 
见 read法 InputStream的一般合同。  

int read(byte[] b, int off, int len) 
从给定的偏移开始,将字节输入流中的字节读入指定的字节数组。
  
void reset() 
见 reset法 InputStream的一般合同。  

long skip(long n) 
见 skip法 InputStream的一般合同。  

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr小布懂

谢谢那么帅还对我这么好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值