java中未知长度的字节数组

新手上路,请多包涵

我正在用 java 构造一个字节数组,但我不知道该数组有多长。

我想要一些像 Java 的 StringBuffer 这样的工具,您只需调用 .append(byte b) 或 .append(byte[] buf) 并让它缓冲我的所有字节并在我完成后返回给我一个 byte[]。是否有一个类可以像 StringBuffer 对字符串那样对字节进行处理?看起来 ByteBuffer 类不是我要找的。

任何人有一个好的解决方案?

原文由 jbu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 468
2 个回答

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

原文由 Clint 发布,翻译遵循 CC BY-SA 3.0 许可协议

只是为了扩展之前的答案,您可以使用 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() 方法将数组转换为字符串。好处是当你需要设置输入的编码时,你可以简单地使用ie:

 baos.toString("Windows-1250")

原文由 Micer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题