ByteArrayOutputStream
java.lang.Object
|—java.io.OutputStream
|—|—java.io.ByteArrayOutputStream
public class ByteArrayOutputStream
extends OutputStream
该类实现了一个输出流,其中的数据被写入一个字节数组。当数据被写入时,缓冲区会自动增长。数据可以用toByteArray()和toString()来检索。
关闭ByteArrayOutputStream没有效果。这个类中的方法可以在流被关闭后被调用而不产生IOException。
Since:
JDK1.0
字段总结
修饰符和类型 | 字段 | 描述 |
---|---|---|
protected byte[] | buf | 存储数据的缓冲区。 |
protected int | count | 缓冲区内的有效字节数。 |
构造函数摘要
构造函数 | 描述 |
---|---|
ByteArrayOutputStream() | 创建一个新的字节数组输出流。 |
ByteArrayOutputStream(int size) | 创建一个新的字节数组输出流,其缓冲区的容量为指定的字节数。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
void | close() | 关闭一个ByteArrayOutputStream没有任何效果。 |
void | reset() | 将该字节数组输出流的count字段重置为0,这样,输出流中当前累积的所有输出都被丢弃。 |
int | size() | 返回缓冲区的当前大小。 |
byte[] | toByteArray() | 创建一个新分配的字节数组。 |
String | toString() | 将缓冲区的内容转换成字符串,使用平台的默认字符集对字节进行解码。 |
String | toString(int hibyte) | 弃用。这个方法不能正确地将字节转换成字符。从JDK 1.1开始,首选的方法是通过toString(String enc)方法,它需要一个编码名称参数,或者通过toString()方法,它使用平台的默认字符编码。 |
String | toString(String charsetName) | 通过使用指定的字符集对字节进行解码,将缓冲区的内容转换为字符串。 |
void | write(byte[] b, int off, int len) | 从偏移量off处开始,将指定的字节数的len字节写到这个字节数的输出流中。 |
void | write(int b) | 将指定的字节写入这个字节数组的输出流中。 |
void | writeTo(OutputStream out) | 将此字节数组输出流的全部内容写入指定的输出流参数,就像使用out.write(buf, 0, count)调用输出流的写入方法一样。 |
从java.lang.Object类继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
从java.io.OutputStream类继承的方法 |
---|
flush, write |
字段详细信息
buf
protected byte[] buf
存储数据的缓冲区。
count
protected int count
缓冲区内的有效字节数。
构造函数详细信息
ByteArrayOutputStream
public ByteArrayOutputStream()
创建一个新的字节数组输出流。缓冲区的容量最初为32字节,但如果有必要,其大小会增加。
ByteArrayOutputStream
public ByteArrayOutputStream(int size)
创建一个新的字节数组输出流,其缓冲区的容量为指定的字节数。
参数。
参数名称 | 参数描述 |
---|---|
size | 初始尺寸。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果尺寸为负数。 |
方法详情
write
public void write(int b)
将指定的字节写入这个字节数组的输出流中。
指定的是:
write in class OutputStream
参数。
参数名称 | 参数描述 |
---|---|
b | 要写入的字节。 |
write
public void write(byte[] b, int off, int len)
从偏移量off开始,将指定字节数的len字节写到这个字节数的输出流中。
重写:
write in class OutputStream
参数:
参数名称 | 参数描述 |
---|---|
b | 数据。 |
off | 数据中的起始偏移。 |
len | 要写入的字节数。 |
writeTo
public void writeTo(OutputStream out) throws IOException
将此字节数组输出流的全部内容写入指定的输出流参数,就像使用out.write(buf, 0, count)调用输出流的写入方法一样。
参数。
参数名称 | 参数描述 |
---|---|
out | 要写入数据的输出流。 |
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生I/O错误。 |
reset
public void reset()
将这个字节数组输出流的count字段重置为0,这样,输出流中当前积累的所有输出都被丢弃了。该输出流可以再次使用,重新使用已经分配的缓冲空间。
toByteArray
public byte[] toByteArray()
创建一个新分配的字节数组。它的大小是这个输出流的当前大小,缓冲区的有效内容已经被复制到它里面。
返回。
这个输出流的当前内容,作为一个字节数组。
size
public int size()
返回缓冲区的当前大小。
返回:
count 字段的值,即此输出流中的有效字节数。
toString
public String toString()
使用平台的默认字符集将缓冲区的内容转换为字符串解码字节。 新字符串的长度是字符集的函数,因此可能不等于缓冲区的大小。
此方法始终使用平台默认字符集的默认替换字符串替换格式错误的输入和不可映射的字符序列。 当需要对解码过程进行更多控制时,应使用 CharsetDecoder 类。
覆盖:
类 Object 中的 toString
返回:
从缓冲区内容解码的字符串。
Since:
JDK1.1
toString
public String toString(String charsetName) throws UnsupportedEncodingException
通过使用命名字符集解码字节,将缓冲区的内容转换为字符串。 新字符串的长度是字符集的函数,因此可能不等于字节数组的长度。
此方法始终使用此字符集的默认替换字符串替换格式错误的输入和不可映射的字符序列。 当需要对解码过程进行更多控制时,应使用 CharsetDecoder 类。
参数:
参数名称 | 参数描述 |
---|---|
charsetName | 支持的字符集的名称 |
返回:
从缓冲区内容解码的字符串。
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedEncodingException | 如果不支持命名字符集 |
Since:
JDK1.1
toString
@Deprecated public String toString(int hibyte)
已弃用。 此方法不能正确地将字节转换为字符。 从 JDK 1.1 开始,执行此操作的首选方法是通过 toString(String enc) 方法,该方法接受一个 encoding-name 参数,或 toString() 方法,该方法使用平台的默认字符编码。
创建一个新分配的字符串。 它的大小是输出流的当前大小,并且缓冲区的有效内容已被复制到其中。 结果字符串中的每个字符 c 都是从字节数组中的相应元素 b 构造的,这样:
c == (char)(((hibyte & 0xff) << 8) | (b & 0xff))
参数:
参数名称 | 参数描述 |
---|---|
hibyte | 每个生成的 Unicode 字符的高字节。 |
返回:
输出流的当前内容,作为字符串。
close
public void close() throws IOException
关闭 ByteArrayOutputStream 无效。 可以在流关闭后调用此类中的方法,而不会生成 IOException。
指定者:
在接口 AutoCloseable 中关闭
指定者:
在接口Closeable中关闭
覆盖:
在类 OutputStream 中关闭
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误。 |