java 中长度未知的字节数组

2022-08-31 13:49:15

我正在Java中构造一个字节数组,我不知道数组会有多长。

我想要一些像Java的StringBuffer这样的工具,你可以调用.append(byte b)或.append(byte[] buf),让它缓冲我所有的字节,并在我完成后返回一个byte[]。有没有一个类可以像StringBuffer对Strings那样对字节执行?看起来ByteBuffer类不是我正在寻找的。

有人有一个好的解决方案吗?


答案 1

尝试 ByteArrayOutputStream。您可以使用,它将根据需要增长。write( byte[] )


答案 2

只是为了扩展前面的答案,您可以使用ByteArrayOutputStream及其方法,其中参数为:public void write(byte[] b, int off, int len)

b - 数据

off - 数据中的起始偏移量

len - 要写入的字节数

如果要将其用作“字节生成器”并逐个字节插入,则可以使用以下方法:

byte byteToInsert = 100;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
baos.write(new byte[]{byteToInsert}, 0, 1);

然后,您可以使用方法将数组转换为字符串。优点是当您需要设置输入的编码时,您可以简单地使用即:baos.toString()

baos.toString("Windows-1250")