IO-BufferedInputStream

java.io java

类 BufferedInputStream数组

java.lang.Object测试

┗java.io.InputStream线程

  ┗java.io.FilterInputStream继承

    ┗java.io.BufferedInputStream索引

全部已实现的接口: 接口

Closeableip

 

public class BufferedInputStream extends FilterInputStream资源

BufferedInputStream 为另外一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在建立 BufferedInputStream 时,会建立一个内部缓冲区数组。在读取或跳过流中的字节时,可根据须要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操做记录输入流中的某个点,reset 操做使得在从包含的输入流中获取新字节以前,再次读取自最后一次 mark 操做后读取的全部字节。get

 

字段摘要

protected  byte[] buf

          存储数据的内部缓冲区数组。

protected  int count

          比缓冲区中最后一个有效字节的索引大 1 的索引。

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比缓冲区中最后一个有效字节的索引大 1 的索引。此值始终处于 0 到 buf.length 的范围内;从 buf[0] 到 buf[count-1] 的元素包含从底层输入流中获取的缓冲输入数据。

 

pos

protected int pos缓冲区中的当前位置。这是将从 buf 数组中读取的下一个字符的索引。

此值始终处于 0 到 count 的范围内。若是此值小于 count,则 buf[pos] 将做为下一个输入字节;若是此值等于 count,则下一次 read 或 skip 操做须要从包含的输入流中读取更多的字节。

 

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 - 若是已经调用其 close() 方法关闭了此输入流,或者发生 I/O 错误。

 

read

public int read(byte[] b, int off, int len) throws IOException

今后字节输入流中给定偏移量处开始将各字节读取到指定的 byte 数组中。

此方法实现了 InputStream 类相应 read 方法的常规协定。另外一个便捷之处在于,它将经过重复地调用底层流的 read 方法,尝试读取尽量多的字节。这种迭代的 read 会一直继续下去,直到知足如下条件之一:

已经读取了指定的字节数,

底层流的 read 方法返回 -1,指示文件末尾(end-of-file),或者

底层流的 available 方法返回 0,指示将阻塞后续的输入请求。

 

若是第一次对底层流调用 read 返回 -1(指示文件末尾),则此方法返回 -1。不然此方法返回实际读取的字节数。

 

鼓励(但不是必须)此类的各个子类以相同的方式尝试读取尽量多的字节。

 

覆盖

类 FilterInputStream 中的 read

参数:

b - 目标缓冲区。

off - 开始存储字节处的偏移量。

len - 要读取的最大字节数。

返回:

读取的字节数;若是已到达流末尾,则返回 -1。

抛出:

IOException - 若是已经调用其 close() 方法关闭了此输入流,或者发生 I/O 错误。

 

skip

public long skip(long n) throws IOException

参见 InputStream 的 skip 方法的常规协定。

 

覆盖:

类 FilterInputStream 中的 skip

参数:

n - 要跳过的字节数。

返回:

跳过的实际字节数。

抛出:

IOException - 若是流不支持查找操做;或者已经调用其 close() 方法关闭了此输入流;或者发生 I/O 错误。

 

available

public int available() throws IOException

返回能够今后输入流读取(或跳过)、且不受此输入流接下来的方法调用阻塞的估计字节数。接下来的调用多是同一个线程,也多是不一样的线程。一次读取或跳过这么多字节将不会受阻塞,但能够读取或跳过数量更少的字节。

 

此方法返回缓冲区中剩余的待读取字节数 (count - pos) 与调用 in.available() 的结果之和。

 

 

覆盖:

类 FilterInputStream 中的 available

返回:

能够不受阻塞地今后输入流读取(或跳过)的估计字节数。

抛出:

IOException - 若是已经调用其 close() 方法关闭了此输入流,或者发生 I/O 错误。

 

mark

public void mark(int readlimit)

参见 InputStream 的 mark 方法的常规协定。

 

覆盖:

类 FilterInputStream 中的 mark

参数:

readlimit - 在标记位置变为无效以前能够读取字节的最大限制。

 

reset

public void reset() throws IOException

参见 InputStream 的 reset 方法的常规协定。

若是 markpos 为 -1(还没有设置标记,或者标记已失效),则抛出 IOException。不然将 pos 设置为与 markpos 相等。

 

覆盖:

类 FilterInputStream 中的 reset

抛出:

IOException - 若是还没有标记此流;或者标记已失效;或者已经调用其 close() 方法关闭了此输入流;或者发生 I/O 错误。

 

markSupported

public boolean markSupported()

测试此输入流是否支持 mark 和 reset 方法。BufferedInputStream 的 markSupported 方法返回 true。

 

覆盖:

类 FilterInputStream 中的 markSupported

返回:

一个 boolean 值,指示此流类型是否支持 mark 和 reset 方法。

 

close

public void close() throws IOException

关闭此输入流并释放与该流关联的全部系统资源。关闭了该流以后,后续的 read()、available()、reset() 或 skip() 调用都将抛出 IOException。关闭以前已关闭的流不会产生任何效果。

 

指定者:

接口 Closeable 中的 close

覆盖:

类 FilterInputStream 中的 close

抛出:

IOException - 若是发生 I/O 错误。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息