- java.lang.Object
-
- java.io.OutputStream
-
- java.io.ByteArrayOutputStream
-
- All Implemented Interfaces:
-
Closeable
,Flushable
,AutoCloseable
public class ByteArrayOutputStream extends OutputStream
该类实现了将数据写入字节数组的输出流。 当数据写入缓冲区时,缓冲区会自动增长。 可以使用toByteArray()
和toString()
检索数据。关闭
ByteArrayOutputStream
没有任何效果。 在关闭流之后,可以调用此类中的方法,而不生成IOException
。- 从以下版本开始:
- 1.0
-
-
构造方法摘要
构造方法 Constructor 描述 ByteArrayOutputStream()
创建一个新的字节数组输出流。ByteArrayOutputStream(int size)
创建一个新的字节数组输出流,具有指定大小的缓冲区容量(以字节为单位)。
-
方法摘要
所有方法 接口方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 void
close()
关闭一个ByteArrayOutputStream
没有任何效果。void
reset()
将此字节数组输出流的count
字段重置为零,以便丢弃输出流中当前累积的所有输出。int
size()
返回缓冲区的当前大小。byte[]
toByteArray()
创建一个新分配的字节数组。String
toString()
使用平台的默认字符集将缓冲区内容转换为字符串解码字节。String
toString(int hibyte)
已过时。此方法无法将字节正确转换为字符。 从JDK 1.1的,要做到这一点的优选方法是通过toString(String enc)
方法,它需要一个编码名称参数或toString()
方法,它使用平台的默认字符编码。String
toString(String charsetName)
通过使用命名的charset
解码字节将缓冲区的内容转换为字符串。void
write(byte[] b, int off, int len)
将len
字节从指定的字节数组开始,从偏移量off
开始写入此字节数组输出流。void
write(int b)
将指定的字节写入此字节数组输出流。void
writeTo(OutputStream out)
将此字节数组输出流的完整内容写入指定的输出流参数,就像使用out.write(buf, 0, count)
调用输出流的写入方法out.write(buf, 0, count)
。-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from class java.io.OutputStream
flush, write
-
-
-
-
构造方法详细信息
-
ByteArrayOutputStream
public ByteArrayOutputStream()
创建一个新的字节数组输出流。 缓冲区容量最初为32字节,但如果需要,其容量会增加。
-
ByteArrayOutputStream
public ByteArrayOutputStream(int size)
创建一个新的字节数组输出流,具有指定大小的缓冲区容量(以字节为单位)。- 参数
-
size
- 初始尺寸。 - 异常
-
IllegalArgumentException
- 如果大小为负。
-
-
方法详细信息
-
write
public void write(int b)
将指定的字节写入此字节数组输出流。- Specified by:
-
write
在OutputStream
- 参数
-
b
- 要写入的字节。
-
write
public void write(byte[] b, int off, int len)
从指定的字节数组写入len
字节,从偏移off
开始,off
到这个字节数组输出流。- 重写:
-
write
在OutputStream
- 参数
-
b
- 数据。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的字节数。
-
writeTo
public void writeTo(OutputStream out) throws IOException
将此字节数组输出流的完整内容写入指定的输出流参数,就像使用out.write(buf, 0, count)
调用输出流的写入方法out.write(buf, 0, count)
。- 参数
-
out
- 要写入数据的输出流。 - 异常
-
IOException
- 如果发生I / O错误。
-
reset
public void reset()
将此字节数组输出流的count
字段重置为零,以便丢弃输出流中当前累积的所有输出。 可以再次使用输出流,重用已经分配的缓冲区空间。
-
toByteArray
public byte[] toByteArray()
创建一个新分配的字节数组。 其大小是此输出流的当前大小,缓冲区的有效内容已被复制到其中。- 结果
- 该输出流的当前内容,作为字节数组。
- 另请参见:
-
size()
-
size
public int size()
返回缓冲区的当前大小。- 结果
-
count
字段的值,这是此输出流中有效字节的数量。 - 另请参见:
-
count
-
toString
public String toString()
使用平台的默认字符集将缓冲区内容转换为字符串解码字节。 新的String
的长度是字符集的函数,因此可能不等于缓冲区的大小。该方法总是使用默认替换字符串替换格式错误的输入和不可映射的字符序列,用于平台的默认字符集。 当需要更多的解码过程控制时,应使用CharsetDecoder类。
-
toString
public String toString(String charsetName) throws UnsupportedEncodingException
通过使用命名的charset
解码字节将缓冲区的内容转换为字符串。 新的String
的长度是字符集的函数,因此可能不等于字节数组的长度。此方法总是用此字符集的默认替换字符串替换格式错误的输入和不可映射字符序列。 当需要对解码过程进行更多控制时,应使用
CharsetDecoder
类。- 参数
-
charsetName
- 支持的名称charset
- 结果
- 从缓冲区的内容中解码字符串。
- 异常
-
UnsupportedEncodingException
- 如果不支持命名的字符集 - 从以下版本开始:
- 1.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字符的高字节。 - 结果
- 输出流的当前内容,作为一个字符串。
- 另请参见:
-
size()
,toString(String)
,toString()
-
close
public void close() throws IOException
关闭一个ByteArrayOutputStream
没有任何效果。 在流关闭后可以调用此类中的方法,而不生成IOException
。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
在接口Closeable
- 重写:
-
close
在OutputStream
- 异常
-
IOException
- 如果发生I / O错误。
-
-