- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- java.io.BufferedInputStream
-
- 实现的所有接口
-
Closeable,AutoCloseable
public class BufferedInputStream extends FilterInputStream
BufferedInputStream向另一个输入流添加功能 - 即缓冲输入并支持mark和reset方法的功能。 创建BufferedInputStream将创建内部缓冲区阵列。 当读取或跳过来自流的字节时,内部缓冲区根据需要从包含的输入流中重新填充,一次多个字节。mark操作会记住输入流中的一个点,并且reset操作会导致在从包含的输入流中获取新字节之前重新读取自最近的mark操作以来读取的所有字节。- 从以下版本开始:
- 1.0
-
-
构造方法摘要
构造方法 构造器 描述 BufferedInputStream(InputStream in)创建一个BufferedInputStream并保存其参数,即输入流in,供以后使用。BufferedInputStream(InputStream in, int size)创建具有指定缓冲区大小的BufferedInputStream,并保存其参数(输入流in)供以后使用。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 intavailable()返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。voidclose()关闭此输入流并释放与该流关联的所有系统资源。voidmark(int readlimit)参见mark方法InputStream的总合同。booleanmarkSupported()测试此输入流是否支持mark和reset方法。intread()参见read方法InputStream的总合同。intread(byte[] b, int off, int len)从给定的偏移量开始,将此字节输入流中的字节读入指定的字节数组。voidreset()参见reset方法InputStream的总合同。longskip(long n)见的总承包skip的方法InputStream。-
声明方法的类 java.io.FilterInputStream
read
-
声明方法的类 java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
字段详细信息
-
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操作将需要从包含的输入流中读取更多字节。- 另请参见:
-
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否则它们不会被丢弃。
-
-
构造方法详细信息
-
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参见read方法InputStream的总合同。- 重写:
-
read类FilterInputStream - 结果
-
数据的下一个字节,如果到达流的末尾,
-1。 - 异常
-
IOException- 如果通过调用其close()方法关闭此输入流,或发生I / O错误。 - 另请参见:
-
FilterInputStream.in
-
read
public int read(byte[] b, int off, int len) throws IOException从给定的偏移量开始,将此字节输入流中的字节读入指定的字节数组。该方法实现了
类的相应InputStream方法的一般合同。 作为额外的便利,它尝试通过重复调用底层流的readread方法来读取尽可能多的字节。 此迭代read继续,直到满足下列条件之一:- 已读取指定的字节数,
- 基础流的
read方法返回-1,表示文件结束,或者 - 基础流的
available方法返回零,表示将阻止进一步的输入请求。
read返回-1以指示文件结束,则此方法返回-1。 否则,此方法返回实际读取的字节数。鼓励但不要求此类的子类尝试以相同的方式读取尽可能多的字节。
- 重写:
-
read在类FilterInputStream - 参数
-
b- 目标缓冲区。 -
off- 开始存储字节的偏移量。 -
len- 要读取的最大字节数。 - 结果
-
读取的字节数,如果已到达流末尾
-1。 - 异常
-
IOException- 如果通过调用其close()方法关闭此输入流,或发生I / O错误。 - 另请参见:
-
FilterInputStream.in
-
skip
public long skip(long n) throws IOException参见skip方法InputStream的总合同。- 重写:
-
skip在类FilterInputStream - 参数
-
n- 要跳过的字节数。 - 结果
- 跳过的实际字节数。
- 异常
-
IOException- 如果通过调用其close()方法关闭此输入流,则in.skip(n)将抛出IOException,或发生I / O错误。
-
available
public int available() throws IOException返回可以从此输入流中读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。 下一次调用可能是同一个线程或另一个线程。 单个读取或跳过这么多字节不会阻塞,但可以读取或跳过更少的字节。此方法返回缓冲区中剩余要读取的字节数之和(
count - pos)和调用in.available()的结果。- 重写:
-
available类FilterInputStream - 结果
- 估计可以从此输入流中无阻塞地读取(或跳过)的字节数。
- 异常
-
IOException- 如果通过调用其close()方法关闭此输入流,或发生I / O错误。
-
mark
public void mark(int readlimit)
参见mark方法InputStream的总合同。- 重写:
-
mark类FilterInputStream - 参数
-
readlimit- 标记位置变为无效之前可读取的最大字节数。 - 另请参见:
-
reset()
-
reset
public void reset() throws IOException参见reset方法InputStream的总合同。如果
markpos是-1(未设置标记或标记已失效),则抛出IOException。 否则,pos设置为markpos。- 重写:
-
reset在类FilterInputStream - 异常
-
IOException- 如果此流尚未标记,或者标记已失效,或者通过调用其close()方法关闭了流,或者发生I / O错误。 - 另请参见:
-
mark(int)
-
markSupported
public boolean markSupported()
测试此输入流是否支持mark和reset方法。 该markSupported的方法BufferedInputStream返回true。- 重写:
-
markSupported类FilterInputStream - 结果
-
a
boolean指示此流类型是否支持mark和reset方法。 - 另请参见:
-
InputStream.mark(int),InputStream.reset()
-
close
public void close() throws IOException关闭此输入流并释放与该流关联的所有系统资源。 关闭流后,进一步的read(),available(),reset()或skip()调用将抛出IOException。 关闭先前关闭的流无效。- Specified by:
-
close,界面AutoCloseable - Specified by:
-
close在界面Closeable - 重写:
-
close类FilterInputStream - 异常
-
IOException- 如果发生I / O错误。 - 另请参见:
-
FilterInputStream.in
-
-