java.lang.Object java.io.OutputStream java.io.ByteArrayOutputStream
public class ByteArrayOutputStream
此类实现了一个输出流,其中的数据被写入一个 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(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 |
字段详细信息 |
---|
protected byte[] buf
protected int count
构造方法详细信息 |
---|
public ByteArrayOutputStream()
public ByteArrayOutputStream(int size)
size
- 初始大小。
IllegalArgumentException
- 如果 size 为负。
方法详细信息 |
---|
public void write(int b)
OutputStream
中的
write
b
- 要写入的字节。
public void write(byte[] b, int off, int len)
off
开始的
len
个字节写入此 byte 数组输出流。
OutputStream
中的
write
b
- 数据。
off
- 数据的初始偏移量。
len
- 要写入的字节数。
public void writeTo(OutputStream out) throws IOException
out.write(buf, 0, count)
调用该输出流的 write 方法效果一样。
out
- 要写入数据的输出流。
IOException
- 如果发生 I/O 错误。
public void reset()
count
字段重置为零,从而丢弃输出流中目前已累积的所有输出。通过重新使用已分配的缓冲区空间,可以再次使用该输出流。
public byte[] toByteArray()
size()
public int size()
count
字段的值,这是此输出流中有效字节的数目。
count
public String toString()
此方法总是使用平台默认字符集的默认替代字符串替代错误输入 (malformed-input) 和不可映射字符 (unmappable-character) 序列。如果需要对解码过程进行更多控制,则应该使用 CharsetDecoder 类。
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 错误。