java字节缓冲视图 2 周 Questions & Answers 1285 你知道java的任何实现吗。尼奥。ByteBuffer封装了一组ByteBuffer实例,使它们看起来像单个实例,而不将字节复制到新的缓冲区中
# 1 楼答案 标准JavaAPI中没有一个。 Grizzly NIO框架有一个CompositeBuffer,但is使用它自己的缓冲区作为包装器: import org.glassfish.grizzly.Buffer; import org.glassfish.grizzly.memory.BuffersBuffer; import org.glassfish.grizzly.memory.CompositeBuffer; .... ByteBuffer byteBuffer = ....; HeapMemoryManager mm = new HeapMemoryManager(); CompositeBuffer buffer = BuffersBuffer.create(); Buffer b = mm.wrap(byteBuffer); buffer.append(b);
# 2 楼答案 java中不存在任何实现。nio,但几乎所有通道都实现了GatheringByteChannel和ScatteringByteChannel,它们可以直接读写字节缓冲区数组 ^{} long write(ByteBuffer[] srcs) Writes a sequence of bytes to this channel from the given buffers. 和^{}: long read(ByteBuffer[] dsts) Reads a sequence of bytes from this channel into the given buffers. 上述方法也有部分版本,请参见上面的链接 NIO的要点是尽可能降低开销,这种方法(与使用单独的对象包装缓冲区相反)不会比简单数组产生更多的开销。我认为您的是这个及其实现的预期用例
# 1 楼答案
标准JavaAPI中没有一个。 Grizzly NIO框架有一个CompositeBuffer,但is使用它自己的缓冲区作为包装器:
# 2 楼答案
java中不存在任何实现。nio,但几乎所有通道都实现了
GatheringByteChannel
和ScatteringByteChannel
,它们可以直接读写字节缓冲区数组^{}
和^{} :
上述方法也有部分版本,请参见上面的链接
NIO的要点是尽可能降低开销,这种方法(与使用单独的对象包装缓冲区相反)不会比简单数组产生更多的开销。我认为您的是这个及其实现的预期用例