阅读(819) (0)

鸿蒙OS ByteArrayOutputStream

2022-10-17 09:37:39 更新

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 错误。