web-dev-qa-db-fra.com

Déterminer le nombre d'octets dans ByteBuffer

J'ai un ByteBuffer qui peut contenir un maximum de (4 + size) bytes (c'est-à-dire un entier suivi de size caractères). Cependant, le nombre de caractères écrits dans ByteBuffer peut être inférieur à size.

Je me demandais donc, est-il possible de déterminer combien de caractères ont été écrits dans le ByteBuffer et pas seulement la taille totale de celui-ci? limit, position et tels ne semblent pas être ce que je recherche.

Merci de votre aide!

20
user2268507

Après avoir écrit dans le ByteBuffer, le nombre d'octets que vous avez écrits peut être trouvé avec la méthode position().

Si vous puis flip() le tampon, le nombre d'octets dans le tampon peut être trouvé avec les méthodes limit() ou remaining().

Si vous lisez ensuite une partie du tampon, le nombre d'octets restants peut être trouvé avec la méthode remaining().

23
Andy Thomas
DatagramChannel channel = DatagramChannel.open();
ByteBuffer bb = ByteBuffer.allocate(5+size);
channel.receive(bb);
bb.flip();
// actual length of received packet
int len = bb.remaining();
2
Lord Moon