前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BufferedInputStream类详解

BufferedInputStream类详解

作者头像
用户7886150
修改2021-04-08 11:05:43
9350
修改2021-04-08 11:05:43
举报
文章被收录于专栏:bit哲学院

参考链接: Java 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的一般合同。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档