ByteBuffer Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Mémoire tampon d’octets.
[Android.Runtime.Register("java/nio/ByteBuffer", DoNotGenerateAcw=true)]
public abstract class ByteBuffer : Java.Nio.Buffer, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IComparable
[<Android.Runtime.Register("java/nio/ByteBuffer", DoNotGenerateAcw=true)>]
type ByteBuffer = class
inherit Buffer
interface IComparable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Héritage
- Dérivé
- Attributs
- Implémente
Remarques
Mémoire tampon d’octets.
Cette classe définit six catégories d’opérations sur les mémoires tampons d’octets :
<ul>
<Li>
Absolu et relatif #get() <i>get</i>
et #put(byte) <i>put</i>
méthodes qui lisent et écrivent des octets uniques ;
</Li>
<Li>
Méthodes relatives #get(byte[]) <i>bulk get</i>
qui transfèrent des séquences contiguës d’octets de cette mémoire tampon dans un tableau ;
</Li>
<Li>
Méthodes relatives #put(byte[]) <i>bulk put</i>
qui transfèrent des séquences contiguës d’octets à partir d’un tableau d’octets ou d’une autre mémoire tampon d’octets dans cette mémoire tampon ;
</Li>
<Li>
Méthodes absolues et relatives #getChar() <i>get</i>
#putChar(char) <i>put</i>
qui lisent et écrivent des valeurs d’autres types primitifs, en les traduisant vers et à partir de séquences d’octets dans un ordre d’octet particulier ;
</Li>
<Li>
Méthodes de création de mémoires tampons d’affichage, qui permettent à une mémoire tampon d’octet d’être vue en tant que mémoire tampon contenant des valeurs d’un autre type primitif ; et
</Li>
<Li>
Méthodes pour #compact compacting
, #duplicate duplicating
et #slice slicing
une mémoire tampon d’octets.
</Li>
</ul>
Les mémoires tampons d’octets peuvent être créées soit par #allocate <i>allocation</i>
, ce qui alloue de l’espace pour les mémoires tampons
contenu, ou par #wrap(byte[]) <i>wrapping</i>
un tableau d’octets existant dans une mémoire tampon.
« direct"><h2> Direct vs. mémoires tampons non directes </h2>
Une mémoire tampon d’octets est directe ou non directe. Étant donné une mémoire tampon d’octets directe, la machine virtuelle Java fera le meilleur effort pour effectuer des opérations d’E/S natives directement sur celle-ci. Autrement dit, il tentera d’éviter de copier le contenu de la mémoire tampon vers (ou à partir) d’une mémoire tampon intermédiaire avant (ou après) chaque appel d’une des opérations d’E/S natives du système d’exploitation sous-jacent.
Une mémoire tampon d’octets directe peut être créée en appelant la #allocateDirect(int) allocateDirect
méthode de fabrique de cette classe. Les mémoires tampons retournées par cette méthode ont généralement des coûts d’allocation et de désallocation un peu plus élevés que les mémoires tampons non directes. Le contenu des mémoires tampons directes peut résider en dehors du tas collecté par le garbage-collected normal, et leur impact sur l’empreinte mémoire d’une application peut ne pas être évident. Il est donc recommandé d’allouer des mémoires tampons directes principalement pour les mémoires tampons volumineuses et de longue durée soumises aux opérations d’E/S natives du système sous-jacent. En général, il est préférable d’allouer des mémoires tampons directes uniquement lorsqu’elles produisent un gain mesurable dans les performances du programme.
Une mémoire tampon d’octets directes peut également être créée par java.nio.channels.FileChannel#map mapping
une région d’un fichier directement en mémoire. Une implémentation de la plateforme Java peut éventuellement prendre en charge la création de tampons d’octets directs à partir du code natif via JNI. Si une instance de l’un de ces types de mémoires tampons fait référence à une région inaccessible de mémoire, une tentative d’accès à cette région ne modifie pas le contenu de la mémoire tampon et entraîne la levée d’une exception non spécifiée au moment de l’accès ou ultérieurement.
Si une mémoire tampon d’octets est directe ou non directe peut être déterminée en appelant sa #isDirect isDirect
méthode. Cette méthode est fournie afin que la gestion explicite des mémoires tampons puisse être effectuée dans du code critique pour les performances.
« bin"><h2> Accès aux données binaires </h2>
Cette classe définit des méthodes pour lire et écrire des valeurs de tous les autres types primitifs, à l’exception boolean
de . Les valeurs primitives sont traduites en séquences (ou à partir) d’octets en fonction de l’ordre d’octet actuel de la mémoire tampon, qui peut être récupéré et modifié via les #order order
méthodes. Les ordres d’octet spécifiques sont représentés par des instances de la ByteOrder
classe. L’ordre initial d’une mémoire tampon d’octets est toujours ByteOrder#BIG_ENDIAN BIG_ENDIAN
.
Pour accéder à des données binaires hétérogènes, c’est-à-dire des séquences de valeurs de différents types, cette classe définit une famille de méthodes absolues et relatives get et put pour chaque type. Pour les valeurs à virgule flottante 32 bits, par exemple, cette classe définit :
<blockquote>
float {@link #getFloat()}
float {@link #getFloat(int) getFloat(int index)}
void {@link #putFloat(float) putFloat(float f)}
void {@link #putFloat(int,float) putFloat(int index, float f)}
</blockquote>
Les méthodes correspondantes sont définies pour les types char
, , short
int
, long
et double
. Les paramètres d’index des méthodes get et put absolues sont en termes d’octets plutôt que du type en cours de lecture ou d’écriture.
« views »>
Pour accéder aux données binaires homogènes, autrement dit, les séquences de valeurs du même type, cette classe définit des méthodes qui peuvent créer des vues d’une mémoire tampon d’octets donnée. Une mémoire tampon d’affichage est simplement une autre mémoire tampon dont le contenu est sauvegardé par la mémoire tampon d’octets. Les modifications apportées au contenu de la mémoire tampon d’octets sont visibles dans la mémoire tampon d’affichage, et inversement ; la position, la limite et les valeurs de marque des deux mémoires tampons sont indépendantes. La #asFloatBuffer() asFloatBuffer
méthode, par exemple, crée une instance de la FloatBuffer
classe sauvegardée par la mémoire tampon d’octets sur laquelle la méthode est appelée. Les méthodes de création d’affichage correspondantes sont définies pour les types char
, , short
int
, long
et double
.
Les mémoires tampons d’affichage présentent trois avantages importants sur les familles de méthodes get et put spécifiques au type décrites ci-dessus :
<ul>
<Li>
Une mémoire tampon d’affichage n’est pas indexée en termes d’octets, mais plutôt en termes de taille spécifique au type de ses valeurs ;
</Li>
<Li>
Une mémoire tampon d’affichage fournit des méthodes d’obtention et de mise en bloc relatives qui peuvent transférer des séquences de valeurs contiguës entre une mémoire tampon et un tableau ou une autre mémoire tampon du même type ; et
</Li>
<Li>
Une mémoire tampon d’affichage est potentiellement beaucoup plus efficace, car elle sera directe si, et seulement si, sa mémoire tampon d’octet de stockage est directe.
</Li>
</ul>
L’ordre d’octet d’une mémoire tampon d’affichage est fixe pour être celui de sa mémoire tampon d’octets au moment où la vue est créée.
<chaînage <d’appel h2> /h2>
Les méthodes de cette classe qui n’ont pas autrement de valeur à retourner sont spécifiées pour retourner la mémoire tampon sur laquelle elles sont appelées. Cela permet aux appels de méthode d’être chaînés.
Séquence d’instructions
<blockquote>
bb.putInt(0xCAFEBABE);
bb.putShort(3);
bb.putShort(45);
</blockquote>
peut, par exemple, être remplacé par l’instruction unique
<blockquote>
bb.putInt(0xCAFEBABE).putShort(3).putShort(45);
</blockquote>
Ajouté dans la version 1.4.
Documentation Java pour java.nio.ByteBuffer
.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.
Constructeurs
ByteBuffer(IntPtr, JniHandleOwnership) |
Constructeur utilisé lors de la création de représentations managées d’objets JNI ; appelée par le runtime. |
Propriétés
Char |
Retourne le char à la position actuelle et augmente la position de 2. |
Class |
Retourne la classe runtime de ce |
Double |
Retourne le double à la position actuelle et augmente la position de 8. |
Float |
Retourne le float à la position actuelle et augmente la position de 4. |
Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
HasArray |
Indique si cette mémoire tampon est sauvegardée ou non par un tableau d’octets accessible. |
HasRemaining |
Indique s’il existe des éléments entre la position actuelle et la limite. (Hérité de Buffer) |
Int |
Retourne l’int à la position actuelle et augmente la position de 4. |
IsDirect |
Retourne true s’il s’agit d’une mémoire tampon directe. (Hérité de Buffer) |
IsReadOnly |
Indique si cette mémoire tampon est en lecture seule. (Hérité de Buffer) |
JniIdentityHashCode |
Mémoire tampon d’octets. (Hérité de Object) |
JniPeerMembers |
Mémoire tampon d’octets. |
Long |
Retourne la longueur à la position actuelle et augmente la position de 8. |
PeerReference |
Mémoire tampon d’octets. (Hérité de Object) |
Short |
Retourne le court à la position actuelle et augmente la position de 2. |
ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. |
Méthodes
AlignedSlice(Int32) |
Crée une mémoire tampon d’octets dont le contenu est une sous-séquence partagée et alignée du contenu de cette mémoire tampon. |
AlignmentOffset(Int32, Int32) |
Retourne l’adresse de mémoire, pointant vers l’octet à l’index donné, module la taille de l’unité donnée. |
Allocate(Int32) |
Alloue une nouvelle mémoire tampon d’octets. |
AllocateDirect(Int32) |
Alloue une nouvelle mémoire tampon d’octets directes. |
ArrayOffset() |
Retourne le décalage dans le tableau de stockage de cette mémoire tampon du premier élément de la mémoire tampon ; ;(opération facultative). |
AsCharBuffer() |
Crée une vue de cette mémoire tampon d’octets en tant que mémoire tampon de caractères. |
AsDoubleBuffer() |
Crée une vue de cette mémoire tampon d’octets en tant que double mémoire tampon. |
AsFloatBuffer() |
Crée une vue de cette mémoire tampon d’octets en tant que mémoire tampon flottante. |
AsIntBuffer() |
Crée une vue de cette mémoire tampon d’octets en tant que mémoire tampon int. |
AsLongBuffer() |
Crée une vue de cette mémoire tampon d’octets comme mémoire tampon longue. |
AsReadOnlyBuffer() |
Crée une mémoire tampon d’octets en lecture seule qui partage le contenu de cette mémoire tampon. |
AsShortBuffer() |
Crée une vue de cette mémoire tampon d’octets sous la forme d’une mémoire tampon courte. |
Capacity() |
Retourne la capacité de cette mémoire tampon. (Hérité de Buffer) |
Clear() |
Efface cette mémoire tampon. (Hérité de Buffer) |
Clone() |
Crée et retourne une copie de cet objet. (Hérité de Object) |
Compact() |
Compacte cette mémoire tampon&e ; ;(opération facultative). |
CompareTo(ByteBuffer) |
Compare cette mémoire tampon à une autre. |
Dispose() |
Mémoire tampon d’octets. (Hérité de Object) |
Dispose(Boolean) |
Mémoire tampon d’octets. (Hérité de Object) |
Duplicate() |
Crée une mémoire tampon d’octets qui partage le contenu de cette mémoire tampon. |
Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
Flip() |
Retourne cette mémoire tampon. (Hérité de Buffer) |
Get() |
Méthode get relative. |
Get(Byte[]) |
Méthode get en bloc relative. |
Get(Byte[], Int32, Int32) |
Méthode get en bloc relative. |
Get(Int32) |
Méthode get absolue. |
GetChar(Int32) |
Méthode get absolue pour la lecture d’une valeur char. |
GetDirectBufferAddress() |
Mémoire tampon d’octets. (Hérité de Buffer) |
GetDouble(Int32) |
Méthode get absolue pour la lecture d’une valeur double. |
GetFloat(Int32) |
Méthode Get absolue pour lire une valeur float. |
GetHashCode() |
Retourne une valeur de code de hachage pour l'objet. (Hérité de Object) |
GetInt(Int32) |
Méthode get absolue pour lire une valeur int. |
GetLong(Int32) |
Méthode get absolue pour lire une valeur longue. |
GetShort(Int32) |
Méthode get absolue pour lire une valeur courte. |
JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
Limit() |
Retourne la limite de cette mémoire tampon. (Hérité de Buffer) |
Limit(Int32) |
Définit la limite de cette mémoire tampon. (Hérité de Buffer) |
Mark() |
Définit la marque de cette mémoire tampon à sa position. (Hérité de Buffer) |
Mismatch(ByteBuffer) |
Recherche et retourne l’index relatif de la première incompatibilité entre cette mémoire tampon et une mémoire tampon donnée. |
Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
Order() |
Récupère l’ordre d’octet de cette mémoire tampon. |
Order(ByteOrder) |
Modifie l’ordre d’octet de cette mémoire tampon. |
Position() |
Retourne la position de cette mémoire tampon. (Hérité de Buffer) |
Position(Int32) |
Définit la position de cette mémoire tampon. (Hérité de Buffer) |
Put(Byte[]) |
Méthode relative put put ; ;(opération facultative). |
Put(Byte[], Int32, Int32) |
Méthode relative put put ; ;(opération facultative). |
Put(ByteBuffer) |
Méthode relative put put ; ;(opération facultative). |
Put(Int32, SByte) |
Absolute put method ; ;(opération facultative). |
Put(SByte) |
Méthode put relative ; ;(opération facultative). |
PutChar(Char) |
Méthode put relative pour l’écriture d’une valeur char ; ;(opération facultative). |
PutChar(Int32, Char) |
Méthode put absolue pour l’écriture d’une valeur de char ; ;(opération facultative). |
PutDouble(Double) |
Méthode put relative pour l’écriture d’une valeur double ; ;(opération facultative). |
PutDouble(Int32, Double) |
Méthode put absolue pour écrire une valeur double ; ;(opération facultative). |
PutFloat(Int32, Single) |
Méthode put absolue pour écrire une valeur float ; ;(opération facultative). |
PutFloat(Single) |
Méthode put relative pour l’écriture d’une valeur float ; ;(opération facultative). |
PutInt(Int32) |
Méthode put relative pour écrire une valeur int ; ;(opération facultative). |
PutInt(Int32, Int32) |
Méthode put absolue pour écrire une valeur int ; ;(opération facultative). |
PutLong(Int32, Int64) |
Méthode put absolue pour écrire une valeur longue&e ; ;(opération facultative). |
PutLong(Int64) |
Méthode put relative pour l’écriture d’une valeur longue& ;(opération facultative). |
PutShort(Int16) |
Méthode relative put pour l’écriture d’une valeur courte& ;(opération facultative). |
PutShort(Int32, Int16) |
Méthode put absolue pour l’écriture d’une valeur courte ; ;(opération facultative). |
Remaining() |
Retourne le nombre d’éléments entre la position actuelle et la limite. (Hérité de Buffer) |
Reset() |
Réinitialise la position de cette mémoire tampon à la position précédemment marquée. (Hérité de Buffer) |
Rewind() |
Rembobine cette mémoire tampon. (Hérité de Buffer) |
SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
Slice() |
Crée une mémoire tampon d’octets dont le contenu est une sous-séquence partagée du contenu de cette mémoire tampon. |
Slice(Int32, Int32) |
Crée une mémoire tampon d’octets dont le contenu est une sous-séquence partagée du contenu de cette mémoire tampon. |
Slice(Int32, Int32) |
Crée une mémoire tampon dont le contenu est une sous-file d’attente partagée du contenu de cette mémoire tampon. (Hérité de Buffer) |
ToArray<T>() |
Mémoire tampon d’octets. (Hérité de Object) |
ToString() |
Retourne une représentation de chaîne de l'objet. (Hérité de Object) |
UnregisterFromRuntime() |
Mémoire tampon d’octets. (Hérité de Object) |
Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou><em>interrompu</em>.<> (Hérité de Object) |
Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Wrap(Byte[]) |
Encapsule un tableau d’octets dans une mémoire tampon. |
Wrap(Byte[], Int32, Int32) |
Encapsule un tableau d’octets dans une mémoire tampon. |
Implémentations d’interfaces explicites
IComparable.CompareTo(Object) |
Mémoire tampon d’octets. |
IJavaPeerable.Disposed() |
Mémoire tampon d’octets. (Hérité de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Mémoire tampon d’octets. (Hérité de Object) |
IJavaPeerable.Finalized() |
Mémoire tampon d’octets. (Hérité de Object) |
IJavaPeerable.JniManagedPeerState |
Mémoire tampon d’octets. (Hérité de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Mémoire tampon d’octets. (Hérité de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Mémoire tampon d’octets. (Hérité de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Mémoire tampon d’octets. (Hérité de Object) |
Méthodes d’extension
JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
JavaCast<TResult>(IJavaObject) |
Mémoire tampon d’octets. |
GetJniTypeName(IJavaPeerable) |
Mémoire tampon d’octets. |