如何最好地读取 ByteBuffer 两次?
How to best read ByteBuffer twice?
我得到一个 DataBuffer
作为输入参数,它是 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()));
Duplicate 用于保留原始位置、限制和标记值的缓冲区。
String bufferContent = StandardCharsets.UTF_8.decode(bb.duplicate()).toString();
我得到一个 DataBuffer
作为输入参数,它是 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()));
Duplicate 用于保留原始位置、限制和标记值的缓冲区。
String bufferContent = StandardCharsets.UTF_8.decode(bb.duplicate()).toString();