如何最好地读取 ByteBuffer 两次?

我得到一个DataBufferas 输入参数,它是ByteBuffer. 现在我想记录缓冲区的全部内容。此外,我必须将该缓冲区传递给外部库。


因此,由于我无法读取ByteBuffer两次,我要么必须重置缓冲区,要么从String.


问题:应该首选以下哪种方法(或者是否有另一种更好的方法)?


//Input:

DataBuffer dataBuffer;


//common logging:

ByteBuffer bb = dataBuffer.asByteBuffer();

String bufferContent = StandardCharsets.UTF_8.decode(bb).toString();

LOGGER.info(bufferContent);


//then either reset the buffer:

bb.rewind();

externalService.call(dataBuffer);


//or convert the string content back to buffer:

externalService.call(new DefaultDataBufferFactory().wrap(bufferContent.getBytes()));


HUWWW
浏览 103回答 1
1回答

红颜莎娜

复制缓冲区以保留原始位置、限制和标记值。String bufferContent = StandardCharsets.UTF_8.decode(bb.duplicate()).toString();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java