我有一个ByteBuffer最多可以容纳 (4 + size)的bytes(即,一个整数后跟size字符)。但是,写入 的字符数ByteBuffer可能小于size。
所以我想知道,有没有办法确定写入了多少个字符,ByteBuffer而不仅仅是它的总大小?limit,position而这似乎不是我所追求的。
谢谢你的帮助!
我有一个ByteBuffer最多可以容纳 (4 + size)的bytes(即,一个整数后跟size字符)。但是,写入 的字符数ByteBuffer可能小于size。
所以我想知道,有没有办法确定写入了多少个字符,ByteBuffer而不仅仅是它的总大小?limit,position而这似乎不是我所追求的。
谢谢你的帮助!
position()写入 ByteBuffer 后,可以使用该方法找到您写入的字节数。
如果你再flip()缓冲区,缓冲区中的字节数可以用limit()orremaining()方法找到。
如果您随后读取一些缓冲区,则可以使用该remaining()方法找到剩余的字节数。
DatagramChannel channel = DatagramChannel.open();
ByteBuffer bb = ByteBuffer.allocate(5+size);
channel.receive(bb);
bb.flip();
// actual length of received packet
int len = bb.remaining();