JavaTM Platform
Standard Ed. 6

java.io
类 ByteArrayOutputStream

java.lang.Object
  继承者 java.io.OutputStream
      继承者 java.io.ByteArrayOutputStream
所有已实现的接口:
Closeable, Flushable

public class ByteArrayOutputStream
extends OutputStream

此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()toString() 获取数据。

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

从以下版本开始:
JDK1.0

字段摘要
protected  byte[] buf
          存储数据的缓冲区。
protected  int count
          缓冲区中的有效字节数。
 
构造方法摘要
ByteArrayOutputStream()
          创建一个新的 byte 数组输出流。
ByteArrayOutputStream(int size)
          创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。
 
方法摘要
 void close()
          关闭 ByteArrayOutputStream 无效。
 void reset()
          将此 byte 数组输出流的 count 字段重置为零,从而丢弃输出流中目前已累积的所有输出。
 int size()
          返回缓冲区的当前大小。
 byte[] toByteArray()
          创建一个新分配的 byte 数组。
 String toString()
          使用平台默认的字符集,通过解码字节将缓冲区内容转换为字符串。
 String toString(int hibyte)
          已过时。 此方法无法将字节正确转换为字符。从 JDK 1.1 开始,完成该转换的首选方法是通过 toString(String enc) 方法(使用一个编码名称参数),或 toString() 方法(使用平台的默认字符编码)。
 String toString(String charsetName)
          使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串。
 void write(byte[] b, int off, int len)
          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte 数组输出流。
 void write(int b)
          将指定的字节写入此 byte 数组输出流。
 void writeTo(OutputStream out)
          将此 byte 数组输出流的全部内容写入到指定的输出流参数中,这与使用 out.write(buf, 0, count) 调用该输出流的 write 方法效果一样。
 
从类 java.io.OutputStream 继承的方法
flush, write
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

buf

protected byte[] buf
存储数据的缓冲区。


count

protected int count
缓冲区中的有效字节数。

构造方法详细信息

ByteArrayOutputStream

public ByteArrayOutputStream()
创建一个新的 byte 数组输出流。缓冲区的容量最初是 32 字节,如有必要可增加其大小。


ByteArrayOutputStream

public ByteArrayOutputStream(int size)
创建一个新的 byte 数组输出流,它具有指定大小的缓冲区容量(以字节为单位)。

参数:
size - 初始大小。
抛出:
IllegalArgumentException - 如果 size 为负。
方法详细信息

write

public void write(int b)
将指定的字节写入此 byte 数组输出流。

指定者:
OutputStream 中的 write
参数:
b - 要写入的字节。

write

public void write(byte[] b,
                  int off,
                  int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte 数组输出流。

覆盖:
OutputStream 中的 write
参数:
b - 数据。
off - 数据的初始偏移量。
len - 要写入的字节数。

writeTo

public void writeTo(OutputStream out)
             throws IOException
将此 byte 数组输出流的全部内容写入到指定的输出流参数中,这与使用 out.write(buf, 0, count) 调用该输出流的 write 方法效果一样。

参数:
out - 要写入数据的输出流。
抛出:
IOException - 如果发生 I/O 错误。

reset

public void reset()
将此 byte 数组输出流的 count 字段重置为零,从而丢弃输出流中目前已累积的所有输出。通过重新使用已分配的缓冲区空间,可以再次使用该输出流。

另请参见:
ByteArrayInputStream.count

toByteArray

public byte[] toByteArray()
创建一个新分配的 byte 数组。其大小是此输出流的当前大小,并且缓冲区的有效内容已复制到该数组中。

返回:
以 byte 数组的形式返回此输出流的当前内容。
另请参见:
size()

size

public int size()
返回缓冲区的当前大小。

返回:
count 字段的值,这是此输出流中有效字节的数目。
另请参见:
count

toString

public String toString()
使用平台默认的字符集,通过解码字节将缓冲区内容转换为字符串。新 String 的长度是字符集的函数,因此可能不等于缓冲区的大小。

此方法总是使用平台默认字符集的默认替代字符串替代错误输入 (malformed-input) 和不可映射字符 (unmappable-character) 序列。如果需要对解码过程进行更多控制,则应该使用 CharsetDecoder 类。

覆盖:
Object 中的 toString
返回:
从缓冲区内容解码的字符串。
从以下版本开始:
JDK1.1

toString

public String toString(String charsetName)
                throws UnsupportedEncodingException
使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串。新 String 的长度是字符集的函数,因此可能不等于缓冲区的大小。

此方法总是使用平台默认字符集的默认替代字符串替代错误输入 (malformed-input) 和不可映射字符 (unmappable-character) 序列。如果需要对解码过程进行更多控制,则应该使用 CharsetDecoder 类。

参数:
charsetName - charset 支持的名称
返回:
从缓冲区内容解码的字符串。
抛出:
UnsupportedEncodingException - 如果不支持指定的字符集。
从以下版本开始:
JDK1.1

toString

@Deprecated
public String toString(int hibyte)
已过时。 此方法无法将字节正确转换为字符。从 JDK 1.1 开始,完成该转换的首选方法是通过 toString(String enc) 方法(使用一个编码名称参数),或 toString() 方法(使用平台的默认字符编码)。

创建一个新分配的字符串。其大小是该输出流的当前大小,并且缓冲区的有效内容已复制到其中。得到的字符串中的每个字符 c 都根据 byte 数组中的相应元素 b 构造,如下所示:
     c == (char)(((hibyte & 0xff) << 8) | (b & 0xff))
 

参数:
hibyte - 每个结果 Unicode 字符的高次字节。
返回:
以字符串的形式返回输出流的当前内容。
另请参见:
size(), toString(String), toString()

close

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

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

JavaTM Platform
Standard Ed. 6

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

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