JavaTM Platform
Standard Ed. 6

java.io
类 ByteArrayInputStream

java.lang.Object
  继承者 java.io.InputStream
      继承者 java.io.ByteArrayInputStream
所有已实现的接口:
Closeable

public class ByteArrayInputStream
extends InputStream

ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。

关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException

从以下版本开始:
JDK1.0
另请参见:
StringBufferInputStream

字段摘要
protected  byte[] buf
          由该流的创建者提供的 byte 数组。
protected  int count
          比输入流缓冲区中最后一个有效字符的索引大一的索引。
protected  int mark
          流中当前的标记位置。
protected  int pos
          要从输入流缓冲区中读取的下一个字符的索引。
 
构造方法摘要
ByteArrayInputStream(byte[] buf)
          创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。
ByteArrayInputStream(byte[] buf, int offset, int length)
          创建 ByteArrayInputStream,使用 buf 作为其缓冲区数组。
 
方法摘要
 int available()
          返回可从此输入流读取(或跳过)的剩余字节数。
 void close()
          关闭 ByteArrayInputStream 无效。
 void mark(int readAheadLimit)
          设置流中的当前标记位置。
 boolean markSupported()
          测试此 InputStream 是否支持 mark/reset。
 int read()
          从此输入流中读取下一个数据字节。
 int read(byte[] b, int off, int len)
          将最多 len 个数据字节从此输入流读入 byte 数组。
 void reset()
          将缓冲区的位置重置为标记位置。
 long skip(long n)
          从此输入流中跳过 n 个输入字节。
 
从类 java.io.InputStream 继承的方法
read
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

buf

protected byte[] buf
由该流的创建者提供的 byte 数组。元素 buf[0]buf[count-1] 是只能从流中读取的字节;元素 buf[pos] 是要读取的下一个字节。


pos

protected int pos
要从输入流缓冲区中读取的下一个字符的索引。此值应该始终是非负数,并且不应大于 count 值。从输入流缓冲区中读取的下一个字节是 buf[pos]


mark

protected int mark
流中当前的标记位置。构造时默认将 ByteArrayInputStream 对象标记在位置零处。通过 mark() 方法可将其标记在缓冲区内的另一个位置处。通过 reset() 方法将当前缓冲区位置设置为此点。

如果尚未设置标记,则标记值是传递给构造方法的偏移量(如果未提供偏移量,则标记值为 0)。

从以下版本开始:
JDK1.1

count

protected int count
比输入流缓冲区中最后一个有效字符的索引大一的索引。此值应该始终是非负数,并且不应大于 buf 的长度。它比 buf 中最后一个可从输入流缓冲区中读取的字节位置大一。

构造方法详细信息

ByteArrayInputStream

public ByteArrayInputStream(byte[] buf)
创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组。该缓冲区数组不是复制得到的。pos 的初始值是 0count 的初始值是 buf 的长度。

参数:
buf - 输入缓冲区。

ByteArrayInputStream

public ByteArrayInputStream(byte[] buf,
                            int offset,
                            int length)
创建 ByteArrayInputStream,使用 buf 作为其缓冲区数组。pos 的初始值是 offsetcount 的初始值是 offset+lengthbuf.length 中的最小值。该缓冲区数组不是复制得到的。将该缓冲区的标记设置为指定的偏移量。

参数:
buf - 输入缓冲区。
offset - 缓冲区中要读取的第一个字节的偏移量。
length - 从缓冲区中读取的最大字节数。
方法详细信息

read

public int read()
从此输入流中读取下一个数据字节。返回一个 0255 范围内的 int 字节值。如果因为到达流末尾而没有可用的字节,则返回值 -1

read 方法不会阻塞。

指定者:
InputStream 中的 read
返回:
下一个数据字节,如果到达流末尾,则返回 -1

read

public int read(byte[] b,
                int off,
                int len)
将最多 len 个数据字节从此输入流读入 byte 数组。如果 pos 等于 count,则返回 -1 指示文件结束。否则,读取的字节数 k 等于 lencount-pos 中的较小者。如果 k 是正数,则以 System.arraycopy 执行的方式将 buf[pos]buf[pos+k-1] 的字节复制到 b[off]b[off+k-1] 中。将值 kpos 相加并返回 k

read 方法不会阻塞。

覆盖:
InputStream 中的 read
参数:
b - 存储读入数据的缓冲区。
off - 目标数组 b 的起始偏移量。
len - 读取的最大字节数。
返回:
读入缓冲区的总字节数,如果由于已到达流末尾而不再有数据,则返回 -1
抛出:
NullPointerException - 如果 bnull
IndexOutOfBoundsException - 如果 off 为负,len 为负,或者 len 大于 b.length - off
另请参见:
InputStream.read()

skip

public long skip(long n)
从此输入流中跳过 n 个输入字节。如果已到达输入流末尾,则可能会跳过较少的字节。实际跳过的字节数 k 等于 ncount-pos 中的较小者。将值 kpos 相加并返回 k

覆盖:
InputStream 中的 skip
参数:
n - 要跳过的字节数。
返回:
跳过的实际字节数。

available

public int available()
返回可从此输入流读取(或跳过)的剩余字节数。

返回值是 count - pos,它是要从输入缓冲区中读取的剩余字节数。

覆盖:
InputStream 中的 available
返回:
不受阻塞地从此输入流读取(或跳过)的剩余字节数。

markSupported

public boolean markSupported()
测试此 InputStream 是否支持 mark/reset。ByteArrayInputStreammarkSupported 方法始终返回 true

覆盖:
InputStream 中的 markSupported
返回:
如果此输入流实例支持 mark 和 reset 方法,则返回 true;否则返回 false
从以下版本开始:
JDK1.1
另请参见:
InputStream.mark(int), InputStream.reset()

mark

public void mark(int readAheadLimit)
设置流中的当前标记位置。构造时默认将 ByteArrayInputStream 对象标记在位置零处。通过此方法可将其标记在缓冲区内的另一个位置处。

如果尚未设置标记,则标记值是传递给构造方法的偏移量(如果未提供偏移量,则标记值为 0)。

注:readAheadLimit 对于此类没有意义。

覆盖:
InputStream 中的 mark
参数:
readAheadLimit - 在标记位置失效前可以读取字节的最大限制。
从以下版本开始:
JDK1.1
另请参见:
InputStream.reset()

reset

public void reset()
将缓冲区的位置重置为标记位置。除非已标记了另一个位置,或者在构造方法中指定了一个偏移量,否则该标记位置是 0。

覆盖:
InputStream 中的 reset
另请参见:
InputStream.mark(int), IOException

close

public void close()
           throws IOException
关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException

指定者:
接口 Closeable 中的 close
覆盖:
InputStream 中的 close
抛出:
IOException - 如果发生 I/O 错误。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策