Android ByteString et Buffers


Exemple

ByteString et Buffers

Okio est construit autour de deux types qui intègrent beaucoup de fonctionnalités dans une API simple:

ByteString est une séquence immuable d'octets. Pour les données de caractères, String est fondamental. ByteString est le frère perdu depuis longtemps de String, ce qui facilite le traitement des données binaires en tant que valeur. Cette classe est ergonomique: elle sait encoder et se décoder en hex, base64 et UTF-8.

La mémoire tampon est une séquence de bits modifiable. Comme ArrayList, vous n'avez pas besoin de dimensionner votre tampon à l'avance. Vous lisez et écrivez des tampons en tant que file d'attente: écrivez les données à la fin et lisez-les à partir du recto. Il n'y a aucune obligation de gérer les positions, les limites ou les capacités.

En interne, ByteString et Buffer font des choses intelligentes pour économiser le processeur et la mémoire. Si vous encodez une chaîne UTF-8 en tant que ByteString, elle met en cache une référence à cette chaîne afin que, si vous la décodez plus tard, cela ne fonctionne plus.

Buffer est implémenté en tant que liste de segments liée. Lorsque vous déplacez des données d'un tampon à un autre, il réaffecte la propriété des segments plutôt que de copier les données. Cette approche est particulièrement utile pour les programmes multithread: un thread qui communique avec le réseau peut échanger des données avec un thread de travail sans aucune copie ni cérémonie.