功能简介
BufferedInputStream 和 BufferedOutputStream一样,他们都是过滤流
装饰器模式下具体的装饰类
用来装饰InputStream以及OutputStream下的其他的具体的实现类
比如FileInputStream
|
BufferedInputStream 和 BufferedOutputStream 都是在内部借助于字节数组,来实现缓存的 |
BufferedInputStream
|
BufferedInputStream |
内部使用字节数组对输入流进行缓存 |
|
protected volatile byte buf[]; |
内部的字节数组 可能动态增长,动态增长是借助于创建新数组然后复制,重新指向 |
|
DEFAULT_BUFFER_SIZE |
默认大小8K 8192 |
|
private static int MAX_BUFFER_SIZE = Integer.MAX_VALUE - 8; |
缓冲区最大允许大小 |
|
protected int count; |
有效字节的个数 |
|
protected int pos; |
buf 数组中读取的下一个字符的下标索引 |
|
protected int markpos = -1; |
最后一次调用 mark 方法时 pos 字段的值 |
|
protected int marklimit; |
调用 mark 方法后,在后续调用 reset 方法失败之前所允许的最大提前读取量 就是最多支持的个数 |
|
buf[]; 用于实际存储字节数组的值 DEFAULT_BUFFER_SIZE 表示默认缓冲区的大小 MAX_BUFFER_SIZE 表示 最大支持的缓冲区大小 这三个字段用于存储缓冲 |
|
pos 用于记录读取位置 |
|
markpos / marklimit mark功能使用 |
构造方法
|
说了很多遍的装饰器模式, 是你还有你 他的使用,必然离不开 InputStream,而且,它内部还会维护一个 InputStream 看下构造方法,如果不指定大小,那么将会使用默认大小 如果指定了大小,只要合法,将会创建字节数组 而且,会调用父类的构造方法,父类FilterInputStream中 in是protected的 |
|
|
继续阅读与本文标签相同的文章
Google Hire加入人工智能招聘功能
-
“缺芯少屏”现状或将改善,静电消除及洁净室工程需求增长
2026-05-15栏目: 教程
-
得助智能:企业如何利用数据做运营
2026-05-15栏目: 教程
-
“护网杯”2019年网络安全防护赛暨第二届工业互联网安全大赛圆满结束
2026-05-15栏目: 教程
-
来了,来了,它真的来了,12米超大幅面金属激光切割机出货了!
2026-05-15栏目: 教程
-
你的脸还要吗?机器人公司全球买人脸肖像权,报酬高达百万
2026-05-15栏目: 教程
