java中未知长度的字节数组

jbu*_*jbu 67 java buffer byte

我在java中构造一个字节数组,我不知道数组会有多长.

我想要一些像Java的StringBuffer这样的工具你可以调用.append(字节b)或.append(byte [] buf)并让它缓冲我的所有字节并在完成后返回给我一个字节数组.是否有一个类用于StringBuffer为字符串做什么?它看起来不像我正在寻找的ByteBuffer类.

谁有一个很好的解决方案?

Cli*_*int 111

试试ByteArrayOutputStream.你可以使用write( byte[] ),它会根据需要增长.

  • 你不必使用write(byte [],int,int)'.还有另外两种write()方法. (5认同)
  • +1证明对于通过Socket接收数据非常有用,而不会弄乱阵列. (3认同)

Mic*_*cer 6

只是为了扩展前面的答案,您可以使用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);
Run Code Online (Sandbox Code Playgroud)

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

baos.toString("Windows-1250")
Run Code Online (Sandbox Code Playgroud)

  • 您可以调用另外两种write()方法.你不必经历所有这些体操. (5认同)