确定字节缓冲器中的字节数

2022-09-01 14:22:07

我有一个可以容纳最大值(4 + )(即,一个整数后跟字符)。但是,写入 的字符数可能小于 。ByteBuffersizebytessizeByteBuffersize

所以我想知道,有没有确定写了多少个字符,而不仅仅是它的总大小?,而这似乎不是我所追求的。ByteBufferlimitposition

感谢您的帮助!


答案 1

写入 ByteBuffer 后,可以使用该方法找到已写入的字节数。position()

如果是缓冲区,则可以使用 or 方法找到缓冲区中的字节数。flip()limit()remaining()

如果随后读取一些缓冲区,则可以使用该方法找到剩余的字节数。remaining()


答案 2
DatagramChannel channel = DatagramChannel.open();
ByteBuffer bb = ByteBuffer.allocate(5+size);
channel.receive(bb);
bb.flip();
// actual length of received packet
int len = bb.remaining();