Netty中的io.netty.buffer.ByteBuf.array()方法会抛出异常 - 直接缓冲区。

3

我想将 io.netty.buffer.ByteBuf 打印为字符串。但是 io.netty.buffer.ByteBuf.array() 抛出以下异常。

java.lang.UnsupportedOperationException: 直接缓冲区 at io.netty.buffer.PooledUnsafeDirectByteBuf.array(PooledUnsafeDirectByteBuf.java:343)

有人能帮我从 io.netty.buffer.ByteBuf 获取 byte[] 吗。

谢谢。

3个回答

3

好的,我找到了一种打印这些值的方法。如果有人感兴趣,

byte[] bytes = new byte[buf.readableBytes()];
buf.duplicate().readBytes(bytes);
System.out.println(new String(bytes));

2

要将ByteBuf的内容作为字符串打印出来,您可以使用buf.toString(java.nio.charset.Charset)


0
Netty有一个方法可以做到这一点。
io.netty.buffer.ByteBufUtil.hexDump(buf)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接