public class BufferedInputStream extends FilterInputStream
BufferedInputStream为另一个输入流添加了功能,即缓冲输入和支持mark和reset方法的功能。
当创建BufferedInputStream时,将创建一个内部缓冲区数组。
当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次有多个字节。
mark操作会记住输入流中的一点,并且reset操作会导致从最近的mark操作之后读取的所有字节在从包含的输入流中取出新的字节之前重新读取。
| Modifier and Type | Field and Description |
|---|---|
protected byte[] |
buf
存储数据的内部缓冲区数组。
|
protected int |
count
索引一大于缓冲区中最后一个有效字节的索引。
|
protected int |
marklimit
mark方法调用后,最大超前允许,后续调用
reset方法失败。
|
protected int |
markpos
pos字段在最后一个
mark方法被调用时的值。
|
protected int |
pos
缓冲区中的当前位置。
|
in| Constructor and Description |
|---|
BufferedInputStream(InputStream in)
创建一个
BufferedInputStream并保存其参数,输入流
in ,供以后使用。
|
BufferedInputStream(InputStream in, int size)
创建
BufferedInputStream具有指定缓冲区大小,并保存其参数,输入流
in ,供以后使用。
|
| Modifier and Type | Method and Description |
|---|---|
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的一般合同。
|
readprotected volatile byte[] buf
protected int count
0到buf.length ;
元素buf[0]至buf[count-1]包含从底层输入流获得的缓冲输入数据。
protected int pos
buf数组读取的下一个字符的索引。
此值始终在0到count 。 如果小于count ,那么buf[pos]是作为输入提供的下一个字节; 如果等于count ,那么接下来的read或skip操作将需要从包含的输入流读取更多的字节。
buf
protected int markpos
pos字段在最后一个mark方法被调用时的值。
此值始终在-1到pos 。 如果输入流中没有标记位置,则此字段为-1 。 如果在输入流中有一个标记的位置,那么buf[markpos]是reset操作后作为输入提供的第一个字节。 如果markpos不是-1 ,然后从位置的所有字节buf[markpos]通过buf[pos-1]必须保留在缓冲器阵列中(尽管它们可以被移动到缓冲器阵列中的另一个处,与适当的调整的值count , pos和markpos ); 除非pos和markpos之间的markpos超过marklimit 。
public BufferedInputStream(InputStream in)
BufferedInputStream并保存其参数,输入流in供以后使用。
内部缓冲区数组创建并存储在buf 。
in - 底层输入流。
public BufferedInputStream(InputStream in, int size)
BufferedInputStream缓冲区大小的BufferedInputStream,并保存其参数,输入流in供以后使用。
长度为size的内部缓冲区阵列被创建并存储在buf 。
in - 底层输入流。
size - 缓冲区大小。
IllegalArgumentException - 如果
size <= 0 。
public int read()
throws IOException
read法
InputStream的一般合同。
read在
FilterInputStream
-1 。
IOException - 如果此输入流已通过调用其
close()方法已关闭,或发生I / O错误。
FilterInputStream.in
public int read(byte[] b,
int off,
int len)
throws IOException
该方法执行类对应的InputStream方法的一般合同。 作为一个额外的方便,它尝试通过重复调用基础流的readread方法来读取尽可能多的字节。 此迭代read继续,直至read条件之一为止:
read方法返回-1 ,表示文件结尾,或 available方法返回零,表示进一步的输入请求将阻塞。 read返回-1以指示文件结束,则此方法返回-1 。
否则,此方法返回实际读取的字节数。
鼓励这个类的子类,但不是必需的,尝试以相同的方式读取尽可能多的字节。
read在
FilterInputStream
b - 目的缓冲区。
off - 开始存储字节的偏移量。
len - 要读取的最大字节数。
-1如果流已到达)。
IOException - 如果此输入流已通过调用其
close()方法关闭,或发生I / O错误。
FilterInputStream.in
public long skip(long n)
throws IOException
skip的方法
InputStream 。
skip在
FilterInputStream
n - 要跳过的字节数。
IOException - 如果流不支持查询,或者如果此输入流已通过调用其
close()方法关闭,或发生I / O错误。
public int available()
throws IOException
该方法返回缓冲区( count - pos )中要读取的剩余字节数和调用in .available()的结果。
available在
FilterInputStream
IOException - 如果此输入流已通过调用其
close()方法关闭,或发生I / O错误。
public void mark(int readlimit)
mark的方法
InputStream 。
mark在类别
FilterInputStream
readlimit - 标记位置无效之前可以读取的最大字节数限制。
reset()
public void reset()
throws IOException
reset的方法InputStream 。
如果markpos是-1 (没有设置标记或标记已被无效),则抛出IOException 。 否则, pos设置等于markpos 。
reset在类别
FilterInputStream
IOException - 如果该流未被标记,或者如果该标记已被无效,或通过调用其
close()方法已关闭流或发生I / O错误。
mark(int)
public boolean markSupported()
mark和reset方法。
markSupported方法BufferedInputStream返回true 。
markSupported在
FilterInputStream
boolean指示这种流类型是否支持
mark和
reset方法。
InputStream.mark(int) ,
InputStream.reset()
public void close()
throws IOException
close在界面
Closeable
close在界面
AutoCloseable
close在
FilterInputStream
IOException - 如果发生I / O错误。
FilterInputStream.in
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.