IO-ByteArrayOutputStream

java.io

类 ByteArrayOutputStream

 

java.lang.Object

┗java.io.OutputStream

  ┗java.io.ByteArrayOutputStream

 

所有已实现的接口:

Closeable, Flushable

 

public class ByteArrayOutputStreamextends OutputStream

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

 

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

 

字段摘要

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(int b)

          将指定的字节写入此 byte 数组输出流。

void write(byte[] b, int off, int len)

          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 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 字段重置为零,从而丢弃输出流中目前已累积的所有输出。通过重新使用已分配的缓冲区空间,可以再次使用该输出流。

 

toByteArray

public byte[] toByteArray()

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

 

返回:

以 byte 数组的形式返回此输出流的当前内容。

 

size

public int size()

返回缓冲区的当前大小。

 

返回:

count 字段的值,这是此输出流中有效字节的数目。

 

toString

public String toString()

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

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

 

 

覆盖:

类 Object 中的 toString

返回:

从缓冲区内容解码的字符串。

 

toString

public String toString(String charsetName) throws UnsupportedEncodingException

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

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

 

 

参数:

charsetName - charset 支持的名称

返回:

从缓冲区内容解码的字符串。

抛出:

UnsupportedEncodingException - 如果不支持指定的字符集。

 

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 字符的高次字节。

返回:

以字符串的形式返回输出流的当前内容。

 

close

public void close() throws IOException

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

 

 

指定者:

接口 Closeable 中的 close

覆盖:

类 OutputStream 中的 close

抛出:

IOException - 如果发生 I/O 错误。

posted @ 2015-07-28 14:37  程序员袍子  阅读(432)  评论(0编辑  收藏  举报