28

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

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

谢谢你的帮助!

4

2 回答 2

38

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

如果你再flip()缓冲区,缓冲区中的字节数可以用limit()orremaining()方法找到。

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

于 2013-06-02T02:06:59.513 回答
3
DatagramChannel channel = DatagramChannel.open();
ByteBuffer bb = ByteBuffer.allocate(5+size);
channel.receive(bb);
bb.flip();
// actual length of received packet
int len = bb.remaining();
于 2015-12-15T19:42:02.470 回答