我有一个输入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);