在Netty中,你能在3.x中读取通道缓冲区两次吗?

在Netty中,你能在3.x中读取通道缓冲区两次吗?,netty,Netty,你能在Netty 3.x中重新读取通道缓冲区吗?也就是说,您是否可以使用同一个ChannelBuffer对象创建两个单独的ChannelBufferInputStreams,并在不需要额外标记/重置的情况下进行读取?您是否总是保证这会起作用,或者只有在有特定类型的源支持的情况下才能起作用?是的,如果您在原始缓冲区上创建单独的视图,应该没有问题: ChannelBuffer original = ChannelBuffers.wrappedBuffer("xyzzy" .getBy

你能在Netty 3.x中重新读取通道缓冲区吗?也就是说,您是否可以使用同一个ChannelBuffer对象创建两个单独的ChannelBufferInputStreams,并在不需要额外标记/重置的情况下进行读取?您是否总是保证这会起作用,或者只有在有特定类型的源支持的情况下才能起作用?

是的,如果您在原始缓冲区上创建单独的视图,应该没有问题:

ChannelBuffer original = ChannelBuffers.wrappedBuffer("xyzzy"
        .getBytes());

InputStream x = new ChannelBufferInputStream(original.duplicate());
InputStream y = new ChannelBufferInputStream(original.duplicate());
在这里,您可以独立地从x和y读取数据,而不会影响原始缓冲区的索引