我有ByteBuffer
,最多可以容纳(4 + size
)bytes
(即整数后跟size
个字符)。但是,写入ByteBuffer
的字符数可能小于size
。
所以我想知道,无论如何确定有多少字符写入ByteBuffer
而不仅仅是它的总大小? limit
,position
等不会成为我追求的目标。
感谢您的帮助!
答案 0 :(得分:22)
写入ByteBuffer后,可以使用position()
方法找到您编写的字节数。
如果您然后flip()
缓冲区,则可以使用limit()
或remaining()
方法找到缓冲区中的字节数。
如果您随后读取了一些缓冲区,则可以使用remaining()
方法找到剩余的字节数。
答案 1 :(得分: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();