我有一个输入ByteArrayOutputStream,需要将其转换为CharBuffer。

我试图避免创建新的字符串。反正有做到这一点。

我正在尝试执行以下操作,但是我没有字符串的编码,因此下面的代码将不起作用(无效的输出)。

ByteBuffer byteBuffer = ByteBuffer.wrap(byteOutputStream.toByteArray());
CharBuffer document = byteBuffer.asCharBuffer();

最佳答案

您必须提供编码。班级应该如何知道如何转换。您无法在写入ByteOutputStream或完全避免流之前确定编码。如果不是,您必须做一些假设,可能会失败

提供一种编码,您可以将字节缓冲区转换为char缓冲区

Charset charset = Charset.forName("ISO-8859-1");
CharsetDecoder decoder = charset.newDecoder();
CharBuffer charBuffer = decoder.decode(yourByteBuffer);

10-07 15:23