|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.io
类 BufferedInputStream
java.lang.Object java.io.InputStream java.io.FilterInputStream java.io.BufferedInputStream
- 所有已实现的接口:
- Closeable
-
public class BufferedInputStream
- extends FilterInputStream
作为另一种输入流,BufferedInputStream
为添加了功能,即缓冲输入和支持 mark
和 reset
方法的能力。创建 BufferedInputStream
时即创建了一个内部缓冲区数组。读取或跳过流中的各字节时,必要时可根据所包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark
操作记录输入流中的某个点,reset
操作导致在从所包含的输入流中获取新的字节前,再次读取自最后一次 mark
操作以来所读取的所有字节。
- 从以下版本开始:
- JDK1.0
字段摘要 | |
---|---|
protected byte[] |
buf 存储数据的内部缓冲区数组。 |
protected int |
count 比缓冲区中最后一个有效字节的索引大一的索引。 |
protected int |
marklimit 调用 mark 方法后,在后续调用 reset 方法失败前所允许的最大提前读取量。 |
protected int |
markpos 最后一次调用 mark 方法时 pos 字段的值。 |
protected int |
pos 缓冲区中的当前位置。 |
从类 java.io.FilterInputStream 继承的字段 |
---|
in |
构造方法摘要 | |
---|---|
BufferedInputStream(InputStream in) 创建 BufferedInputStream 并保存其参数,即输入流 in ,以便将来使用。 |
|
BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream ,并保存其参数,即输入流 in ,以便将来使用。 |
方法摘要 | |
---|---|
int |
available() 返回可以不受阻塞地从此输入流读取的字节数。 |
void |
close() 关闭此输入流并释放与该流关联的所有系统资源。 |
void |
mark(int readlimit) 参见 InputStream 的 mark 方法的常规协定。 |
boolean |
markSupported() 测试此输入流是否支持 mark 和 reset 方法。 |
int |
read() 参见 InputStream 的 read 方法的常规协定。 |
int |
read(byte[] b, int off, int len) 在此字节输入流中从给定的偏移量开始将各字节读取到指定的 byte 数组中。 |
void |
reset() 参见 InputStream 的 reset 方法的常规协定。 |
long |
skip(long n) 参见 InputStream 的 skip 方法的常规协定。 |
从类 java.io.FilterInputStream 继承的方法 |
---|
read |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
buf
protected volatile byte[] buf
-
存储数据的内部缓冲区数组。必要时,可用另一个不同大小的数组替换它。
count
protected int count
-
比缓冲区中最后一个有效字节的索引大一的索引。此值始终处于
0
到buf.length
范围内;元素buf[0]
到buf[count-1]
包含缓冲的输入数据,这些数据从基础输入流中获得。
pos
protected int pos
-
缓冲区中的当前位置。这是要从
buf
数组中读取的下一字符的索引。此值始终处于
0
到count
范围内。如果此值小于count
,则buf[pos]
是用作输入的下一个字节;如果此值等于count
,要进行下一次read
或skip
操作,需要从所包含的输入流中读取更多的字节。- 另请参见:
-
buf
markpos
protected int markpos
-
最后一次调用
mark
方法时pos
字段的值。此值始终处于
-1
到pos
范围内。如果在输入流中没有已标记的位置,则此字段为-1
。如果在输入流中有已标记的位置,则buf[markpos]
是reset
操作后用作输入的第一个字节。如果markpos
不是-1
,则从位置buf[markpos]
到buf[pos-1]
之间的所有字节都必须保留在缓冲区数组中(尽管对count
、pos
和markpos
的值进行合适的调整后,这些字节可能移到缓冲区数组中的其他位置);除非pos
和markpos
之间的差超过marklimit
,否则不能将其丢弃。
marklimit
protected int marklimit
-
调用
mark
方法后,在后续调用reset
方法失败前所允许的最大提前读取量。只要pos
和markpos
之间的差超过marklimit
,就可以通过将markpos
设置为-1
来删除该标记。
构造方法详细信息 |
---|
BufferedInputStream
public BufferedInputStream(InputStream in)
-
创建
BufferedInputStream
并保存其参数,即输入流in
,以便将来使用。创建一个内部缓冲区数组并将其存储在buf
中。- 参数:
-
in
- 基础输入流。
BufferedInputStream
public BufferedInputStream(InputStream in, int size)
-
创建具有指定缓冲区大小的
BufferedInputStream
,并保存其参数,即输入流in
,以便将来使用。创建一个长度为size
的内部缓冲区数组并将其存储在buf
中。- 参数:
-
in
- 基础输入流。 -
size
- 缓冲区的大小。 - 抛出:
-
IllegalArgumentException
- 如果 size <= 0
方法详细信息 |
---|
read
public int read() throws IOException
-
参见
InputStream
的read
方法的常规协定。 -
- 覆盖:
-
类
FilterInputStream
中的read
-
- 返回:
-
下一个数据字节,如果到达流末尾,则返回
-1
。 - 抛出:
-
IOException
- 如果发生 I/O 错误。 - 另请参见:
-
FilterInputStream.in
read
public int read(byte[] b, int off, int len) throws IOException
-
在此字节输入流中从给定的偏移量开始将各字节读取到指定的 byte 数组中。
此方法实现了相应
类的InputStream
方法的常规协定。另一个便捷之处在于,它会尝试尽可能多的读取字节,方法是重复地调用基础流的read
read
方法。这种迭代的read
会一直继续下去,直到满足下列某个条件:- 已经读取了指定的字节数,
- 基础流的
read
方法返回-1
,指示文件末尾(end-of-file),或者 - 基础流的
available
方法返回零,指示将阻塞进一步的输入请求。
read
返回-1
(指示文件末尾),则此方法返回-1
。否则此方法返回实际读取的字节数。鼓励(但不是必须)此类的各个子类以相同的方式尝试读取尽可能多的字节。
-
- 覆盖:
-
类
FilterInputStream
中的read
-
- 参数:
-
b
- 目标缓冲区。 -
off
- 开始存储字节处的偏移量。 -
len
- 要读取的最大字节数。 - 返回:
-
读取的字节数,如果已到达流末尾,则返回
-1
。 - 抛出:
-
IOException
- 如果发生 I/O 错误。 - 另请参见:
-
FilterInputStream.in