java.lang.Object
java.io.OutputStream
java.io.ByteArrayOutputStream
- 所有已实现的接口:
-
Closeable
,Flushable
,AutoCloseable
该类实现了一个输出流,其中数据被写入到一个字节数组中。随着数据的写入,缓冲区会自动增长。可以使用
toByteArray()
和toString()
来检索数据。
关闭ByteArrayOutputStream
没有任何效果。在流关闭后仍然可以调用该类中的方法,而不会生成IOException
。
- 自版本:
- 1.0
-
Field Summary
-
Constructor Summary
ConstructorDescription创建一个新的ByteArrayOutputStream
。ByteArrayOutputStream
(int size) 创建一个新的ByteArrayOutputStream
,具有指定大小(以字节为单位)的缓冲区容量。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
关闭ByteArrayOutputStream
没有任何效果。void
reset()
将此ByteArrayOutputStream
的count
字段重置为零,以便丢弃输出流中当前累积的所有内容。int
size()
返回缓冲区的当前大小。byte[]
创建一个新分配的字节数组。toString()
使用默认字符集解码缓冲区的内容为字符串。toString
(int hibyte) 已弃用。该方法未正确将字节转换为字符。使用指定的charset
解码缓冲区的内容为字符串。使用指定的charset
解码缓冲区的内容为字符串。void
write
(byte[] b, int off, int len) 从指定的字节数组中从偏移量off
开始写入len
字节到此ByteArrayOutputStream
。void
write
(int b) 将指定的字节写入此ByteArrayOutputStream
。void
writeBytes
(byte[] b) 将指定字节数组的全部内容写入此ByteArrayOutputStream
。void
writeTo
(OutputStream out) 将此ByteArrayOutputStream
的全部内容写入到指定的输出流参数中,就好像通过调用输出流的write方法使用out.write(buf, 0, count)
一样。Methods declared in class java.io.OutputStream
flush, nullOutputStream, write
-
Field Details
-
buf
protected byte[] buf存储数据的缓冲区。 -
count
protected int count缓冲区中有效字节的数量。
-
-
Constructor Details
-
ByteArrayOutputStream
public ByteArrayOutputStream()创建一个新的ByteArrayOutputStream
。缓冲区容量最初为32字节,如果需要会增加其大小。 -
ByteArrayOutputStream
public ByteArrayOutputStream(int size) 创建一个新的ByteArrayOutputStream
,具有指定大小(以字节为单位)的缓冲区容量。- 参数:
-
size
- 初始大小。 - 抛出:
-
IllegalArgumentException
- 如果大小为负。
-
-
Method Details
-
write
public void write(int b) 将指定的字节写入此ByteArrayOutputStream
。- 指定者:
-
write
在类中OutputStream
- 参数:
-
b
- 要写入的字节。
-
write
public void write(byte[] b, int off, int len) 从指定的字节数组中从偏移量off
开始写入len
字节到此ByteArrayOutputStream
。- 覆盖:
-
write
在类中OutputStream
- 参数:
-
b
- 数据。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的字节数。 - 抛出:
-
NullPointerException
- 如果b
为null
。 -
IndexOutOfBoundsException
- 如果off
为负,len
为负,或len
大于b.length - off
-
writeBytes
public void writeBytes(byte[] b) 将指定字节数组的全部内容写入此ByteArrayOutputStream
。- API注释:
-
该方法等效于
write(b, 0, b.length)
。 - 参数:
-
b
- 数据。 - 抛出:
-
NullPointerException
- 如果b
为null
。 - 自版本:
- 11
-
writeTo
将此ByteArrayOutputStream
的全部内容写入到指定的输出流参数中,就好像通过调用输出流的write方法使用out.write(buf, 0, count)
一样。- 参数:
-
out
- 要写入数据的输出流。 - 抛出:
-
NullPointerException
- 如果out
为null
。 -
IOException
- 如果发生I/O错误。
-
reset
public void reset()将此ByteArrayOutputStream
的count
字段重置为零,以便丢弃输出流中当前累积的所有内容。可以再次使用输出流,重用已分配的缓冲区空间。- 参见:
-
toByteArray
public byte[] toByteArray()创建一个新分配的字节数组。其大小为此输出流的当前大小,并且缓冲区的有效内容已被复制到其中。- 返回:
- 作为字节数组的当前内容。
- 参见:
-
size
public int size()返回缓冲区的当前大小。- 返回:
-
count
字段的值,即此输出流中有效字节的数量。 - 参见:
-
toString
使用默认字符集解码缓冲区的内容为字符串。新String
的长度取决于字符集,因此可能不等于缓冲区的大小。该方法始终使用默认字符集替换格式错误的输入和不可映射的字符序列。当需要对解码过程进行更多控制时,应使用CharsetDecoder类。
-
toString
使用指定的charset
解码缓冲区的内容为字符串。该方法等效于使用带有
charset
的#toString(charset)
。形式为
ByteArrayOutputStream b; b.toString("UTF-8")
ByteArrayOutputStream b; b.toString(StandardCharsets.UTF_8)
- 参数:
-
charsetName
- 支持的charset
的名称 - 返回:
- 从缓冲区内容解码的字符串。
- 抛出:
-
UnsupportedEncodingException
- 如果不支持指定的字符集 - 自版本:
- 1.1
-
toString
使用指定的charset
解码缓冲区的内容为字符串。该方法始终使用字符集的默认替换字符串替换格式错误的输入和不可映射的字符序列。当需要对解码过程进行更多控制时,应使用
CharsetDecoder
类。- 参数:
-
charset
- 用于解码bytes
的charset - 返回:
- 从缓冲区内容解码的字符串。
- 自版本:
- 10
-
toString
Deprecated.This method does not properly convert bytes into characters. As of JDK 1.1, the preferred way to do this is via thetoString(String charsetName)
ortoString(Charset charset)
method, which takes an encoding-name or charset argument, or thetoString()
method, which uses the default charset.创建一个新分配的字符串。其大小为输出流的当前大小,并且缓冲区的有效内容已被复制到其中。结果字符串中的每个字符 c 都是从字节数组中的相应元素 b 构造而成,使得:c == (char)(((hibyte & 0xff) << 8) | (b & 0xff))
- 参数:
-
hibyte
- 每个生成的 Unicode 字符的高字节。 - 返回:
- 输出流的当前内容,作为一个字符串。
- 参见:
-
close
关闭ByteArrayOutputStream
没有任何效果。在流关闭后仍可调用此类中的方法,而不会生成IOException
。- 指定者:
-
close
在接口AutoCloseable
- 指定者:
-
close
在接口Closeable
- 覆盖:
-
close
在类OutputStream
- 抛出:
-
IOException
- 如果发生 I/O 错误。
-