【发布时间】:2023-03-09 06:48:01
【问题描述】:
因此,我的 ByteArrayOutputStream 的前四个字节包含流中标头的长度。我需要从流中删除该标题并继续我的业务。
ByteArrayOutputStream oStream = new ByteArrayOutputStream();
/* populate ByteArrayOutputStream */
//grab first int
int headerLength = oStream.toByteArray()[4];
//remove headerLength
String newString = oStream.toString().substring(jsonLength, oStream.size());
oStream.write(newString.getBytes());
我认为这不是解决此问题的正确方法,有人有什么建议吗?
【问题讨论】:
-
如果以后需要删除它们,为什么还要将它们写入流?只是不要一开始就写它们。
-
@JB Nizet - 我确实需要它们我只是省略了很多代码以使事情更容易理解。一旦我使用它们,虽然我需要删除它们。
-
@Grammin:你没有让事情变得更容易理解——你让它们变得完全难以理解。根本不清楚您要做什么。
-
ByteArrayOutputStream 的目标是生成一个字节数组。如果您不希望最终字节数组中的标头长度,则不应将其写入输出流。如果您想要字节数组中的标头长度,则无需删除任何内容。你到底想达到什么目标?
-
当你使用OutputStream的结果时,你可以跳过第一个N字节。例如
write(oStream.toByteArray(), 4, length-4)
标签: java bytearrayoutputstream