ByteBuffer Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Buffer di byte.
[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
- Ereditarietà
- Derivato
- Attributi
- Implementazioni
Commenti
Buffer di byte.
Questa classe definisce sei categorie di operazioni sui buffer di byte:
<ul>
<li>
Metodi assoluti e relativi #get() <i>get</i>
#put(byte) <i>put</i>
che leggono e scrivono singoli byte;
</li>
<li>
Metodi relativi #get(byte[]) <i>bulk get</i>
che trasferisce sequenze contigue di byte da questo buffer in una matrice;
</li>
<li>
Metodi relativi #put(byte[]) <i>bulk put</i>
che trasferiscono sequenze contigue di byte da una matrice di byte o da un altro buffer di byte in questo buffer;
</li>
<li>
Metodi assoluti e relativi #getChar() <i>get</i>
#putChar(char) <i>put</i>
che leggono e scrivono valori di altri tipi primitivi, convertendoli in e da sequenze di byte in un ordine di byte specifico;
</li>
<li>
Metodi per la creazione di buffer di visualizzazione, che consentono di visualizzare un buffer di byte come buffer contenente valori di un altro tipo primitivo; e
</li>
<li>
Metodi per #compact compacting
, #duplicate duplicating
e #slice slicing
un buffer di byte.
</li>
</ul>
I buffer di byte possono essere creati da #allocate <i>allocation</i>
, che alloca spazio per il buffer
contenuto o da #wrap(byte[]) <i>wrapping</i>
una matrice di byte esistente in un buffer.
"direct"><h2> Direct e non direct buffers </h2>
Un buffer di byte è diretto o non diretto. Dato un buffer di byte diretto, la macchina virtuale Java farà il massimo sforzo per eseguire operazioni di I/O native direttamente su di esso. Ciò significa che tenterà di evitare di copiare il contenuto del buffer in (o da) un buffer intermedio prima (o dopo) ogni chiamata di una delle operazioni di I/O native del sistema operativo sottostante.
È possibile creare un buffer di byte diretto richiamando il #allocateDirect(int) allocateDirect
metodo factory di questa classe. I buffer restituiti da questo metodo hanno in genere costi di allocazione e deallocazione più elevati rispetto ai buffer non diretti. Il contenuto dei buffer diretti può risiedere al di fuori del normale heap sottoposto a Garbage Collection e quindi il loro impatto sul footprint di memoria di un'applicazione potrebbe non essere ovvio. È quindi consigliabile allocare i buffer diretti principalmente per buffer di grandi dimensioni di lunga durata soggetti alle operazioni di I/O native del sistema sottostante. In generale, è consigliabile allocare buffer diretti solo quando producono un guadagno misurabile nelle prestazioni del programma.
Un buffer di byte diretto può anche essere creato da java.nio.channels.FileChannel#map mapping
un'area di un file direttamente in memoria. Un'implementazione della piattaforma Java può facoltativamente supportare la creazione di buffer di byte diretti dal codice nativo tramite JNI. Se un'istanza di uno di questi tipi di buffer fa riferimento a un'area di memoria inaccessibile, un tentativo di accedere a tale area non modificherà il contenuto del buffer e causerà la generazione di un'eccezione non specificata al momento dell'accesso o in un secondo momento.
Se un buffer di byte è diretto o non diretto può essere determinato richiamando il relativo #isDirect isDirect
metodo. Questo metodo viene fornito in modo che la gestione esplicita del buffer possa essere eseguita nel codice critico per le prestazioni.
"bin"><h2> Access to binary data </h2>
Questa classe definisce i metodi per la lettura e la scrittura di valori di tutti gli altri tipi primitivi, ad eccezione boolean
di . I valori primitivi vengono convertiti in sequenze di byte (o da) in base all'ordine di byte corrente del buffer, che può essere recuperato e modificato tramite i #order order
metodi . Gli ordini di byte specifici sono rappresentati da istanze della ByteOrder
classe . L'ordine iniziale di un buffer di byte è sempre ByteOrder#BIG_ENDIAN BIG_ENDIAN
.
Per l'accesso a dati binari eterogenei, ovvero sequenze di valori di tipi diversi, questa classe definisce una famiglia di metodi get e get assoluti e relativi per ogni tipo. Per i valori a virgola mobile a 32 bit, ad esempio, questa classe definisce:
<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>
I metodi corrispondenti sono definiti per i tipi char
, short
, int
, long
e double
. I parametri di indice dei metodi get e put assoluti sono in termini di byte anziché del tipo da leggere o scrivere.
"views">
Per l'accesso a dati binari omogenei, ovvero sequenze di valori dello stesso tipo, questa classe definisce i metodi che possono creare visualizzazioni di un determinato buffer di byte. Un buffer di visualizzazione è semplicemente un altro buffer il cui contenuto è supportato dal buffer di byte. Le modifiche apportate al contenuto del buffer di byte saranno visibili nel buffer di visualizzazione e viceversa; la posizione, il limite e i valori mark dei due buffer sono indipendenti. Il #asFloatBuffer() asFloatBuffer
metodo, ad esempio, crea un'istanza della FloatBuffer
classe supportata dal buffer dei byte su cui viene richiamato il metodo . I metodi di creazione della vista corrispondenti sono definiti per i tipi char
, , long
short
int
, e .double
I buffer di visualizzazione presentano tre vantaggi importanti rispetto alle famiglie di metodi get e put specifici del tipo descritti in precedenza:
<ul>
<li>
Un buffer di visualizzazione non viene indicizzato in termini di byte, ma piuttosto in termini di dimensioni specifiche del tipo dei relativi valori;
</li>
<li>
Un buffer di visualizzazione fornisce metodi di recupero e inserimento bulk relativi che possono trasferire sequenze contigue di valori tra un buffer e una matrice o un altro buffer dello stesso tipo; e
</li>
<li>
Un buffer di visualizzazione è potenzialmente molto più efficiente perché sarà diretto se e solo se il relativo buffer di byte di backup è diretto.
</li>
</ul>
L'ordine dei byte di un buffer di visualizzazione è fisso in modo che sia quello del relativo buffer di byte al momento della creazione della vista.
<concatenamento <delle chiamate h2> /h2>
I metodi in questa classe che non dispongono di un valore da restituire vengono specificati per restituire il buffer su cui vengono richiamati. In questo modo è possibile concatenare le chiamate al metodo.
Sequenza di istruzioni
<blockquote>
bb.putInt(0xCAFEBABE);
bb.putShort(3);
bb.putShort(45);
</blockquote>
può, ad esempio, essere sostituito dalla singola istruzione
<blockquote>
bb.putInt(0xCAFEBABE).putShort(3).putShort(45);
</blockquote>
Aggiunta nella versione 1.4.
Documentazione java per java.nio.ByteBuffer
.
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.
Costruttori
ByteBuffer(IntPtr, JniHandleOwnership) |
Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime. |
Proprietà
Char |
Restituisce il carattere nella posizione corrente e aumenta la posizione di 2. |
Class |
Restituisce la classe di runtime di questo |
Double |
Restituisce il doppio nella posizione corrente e aumenta la posizione di 8. |
Float |
Restituisce il valore float in corrispondenza della posizione corrente e aumenta la posizione di 4. |
Handle |
Handle per l'istanza di Android sottostante. (Ereditato da Object) |
HasArray |
Indica se questo buffer è supportato da una matrice di byte accessibile. |
HasRemaining |
Indica se sono presenti elementi tra la posizione corrente e il limite. (Ereditato da Buffer) |
Int |
Restituisce l'int nella posizione corrente e aumenta la posizione di 4. |
IsDirect |
Restituisce true se si tratta di un buffer diretto. (Ereditato da Buffer) |
IsReadOnly |
Indica se il buffer è di sola lettura. (Ereditato da Buffer) |
JniIdentityHashCode |
Buffer di byte. (Ereditato da Object) |
JniPeerMembers |
Buffer di byte. |
Long |
Restituisce il valore long in corrispondenza della posizione corrente e aumenta la posizione di 8. |
PeerReference |
Buffer di byte. (Ereditato da Object) |
Short |
Restituisce il valore short nella posizione corrente e aumenta la posizione di 2. |
ThresholdClass |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
ThresholdType |
Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice. |
Metodi
AlignedSlice(Int32) |
Crea un nuovo buffer di byte il cui contenuto è una sottosequenza condivisa e allineata del contenuto del buffer. |
AlignmentOffset(Int32, Int32) |
Restituisce l'indirizzo di memoria, che punta al byte in corrispondenza dell'indice specificato, modulo la dimensione dell'unità specificata. |
Allocate(Int32) |
Alloca un nuovo buffer di byte. |
AllocateDirect(Int32) |
Alloca un nuovo buffer di byte diretto. |
ArrayOffset() |
Restituisce l'offset all'interno della matrice di backup del buffer del primo elemento del buffer (operazione facoltativa). |
AsCharBuffer() |
Crea una visualizzazione di questo buffer di byte come buffer char. |
AsDoubleBuffer() |
Crea una visualizzazione di questo buffer di byte come doppio buffer. |
AsFloatBuffer() |
Crea una visualizzazione di questo buffer di byte come buffer float. |
AsIntBuffer() |
Crea una visualizzazione di questo buffer di byte come buffer int. |
AsLongBuffer() |
Crea una visualizzazione di questo buffer di byte come buffer lungo. |
AsReadOnlyBuffer() |
Crea un nuovo buffer di byte di sola lettura che condivide il contenuto del buffer. |
AsShortBuffer() |
Crea una visualizzazione di questo buffer di byte come buffer breve. |
Capacity() |
Restituisce la capacità del buffer. (Ereditato da Buffer) |
Clear() |
Cancella questo buffer. (Ereditato da Buffer) |
Clone() |
Crea e restituisce una copia di questo oggetto. (Ereditato da Object) |
Compact() |
Compatta questo buffer (operazione facoltativa). |
CompareTo(ByteBuffer) |
Confronta questo buffer con un altro. |
Dispose() |
Buffer di byte. (Ereditato da Object) |
Dispose(Boolean) |
Buffer di byte. (Ereditato da Object) |
Duplicate() |
Crea un nuovo buffer di byte che condivide il contenuto del buffer. |
Equals(Object) |
Indica se un altro oggetto è "uguale a" questo. (Ereditato da Object) |
Flip() |
Capovolge questo buffer. (Ereditato da Buffer) |
Get() |
Metodo get relativo. |
Get(Byte[]) |
Metodo get bulk relativo. |
Get(Byte[], Int32, Int32) |
Metodo get bulk relativo. |
Get(Int32) |
Metodo get assoluto. |
GetChar(Int32) |
Metodo get assoluto per la lettura di un valore char. |
GetDirectBufferAddress() |
Buffer di byte. (Ereditato da Buffer) |
GetDouble(Int32) |
Metodo get assoluto per la lettura di un valore double. |
GetFloat(Int32) |
Metodo get assoluto per la lettura di un valore float. |
GetHashCode() |
Restituisce un valore del codice hash per l'oggetto. (Ereditato da Object) |
GetInt(Int32) |
Metodo get assoluto per la lettura di un valore int. |
GetLong(Int32) |
Metodo get assoluto per la lettura di un valore long. |
GetShort(Int32) |
Metodo get assoluto per la lettura di un valore breve. |
JavaFinalize() |
Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto . (Ereditato da Object) |
Limit() |
Restituisce il limite del buffer. (Ereditato da Buffer) |
Limit(Int32) |
Imposta il limite del buffer. (Ereditato da Buffer) |
Mark() |
Imposta il contrassegno del buffer in corrispondenza della posizione. (Ereditato da Buffer) |
Mismatch(ByteBuffer) |
Trova e restituisce l'indice relativo della prima mancata corrispondenza tra questo buffer e un determinato buffer. |
Notify() |
Riattiva un singolo thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
NotifyAll() |
Riattiva tutti i thread in attesa del monitor dell'oggetto. (Ereditato da Object) |
Order() |
Recupera l'ordine dei byte di questo buffer. |
Order(ByteOrder) |
Modifica l'ordine dei byte del buffer. |
Position() |
Restituisce la posizione del buffer. (Ereditato da Buffer) |
Position(Int32) |
Imposta la posizione del buffer. (Ereditato da Buffer) |
Put(Byte[]) |
Metodo put bulk relativo (operazione facoltativa). |
Put(Byte[], Int32, Int32) |
Metodo put bulk relativo (operazione facoltativa). |
Put(ByteBuffer) |
Metodo put bulk relativo (operazione facoltativa). |
Put(Int32, SByte) |
Metodo put assoluto (operazione facoltativa). |
Put(SByte) |
Metodo put relativo (operazione facoltativa). |
PutChar(Char) |
Metodo put relativo per la scrittura di un valore char (operazione facoltativa). |
PutChar(Int32, Char) |
Metodo put assoluto per la scrittura di un valore char (operazione facoltativa). |
PutDouble(Double) |
Metodo put relativo per la scrittura di un valore doppio (operazione facoltativa). |
PutDouble(Int32, Double) |
Metodo put assoluto per la scrittura di un valore doppio (operazione facoltativa). |
PutFloat(Int32, Single) |
Metodo put assoluto per la scrittura di un valore float (operazione facoltativa). |
PutFloat(Single) |
Metodo put relativo per la scrittura di un valore float (operazione facoltativa). |
PutInt(Int32) |
Metodo put relativo per la scrittura di un valore int (operazione facoltativa). |
PutInt(Int32, Int32) |
Metodo put assoluto per la scrittura di un valore int (operazione facoltativa). |
PutLong(Int32, Int64) |
Metodo put assoluto per la scrittura di un valore lungo (operazione facoltativa). |
PutLong(Int64) |
Metodo put relativo per la scrittura di un valore lungo (operazione facoltativa). |
PutShort(Int16) |
Metodo put relativo per la scrittura di un valore breve (operazione facoltativa). |
PutShort(Int32, Int16) |
Metodo put assoluto per la scrittura di un valore breve (operazione facoltativa). |
Remaining() |
Restituisce il numero di elementi tra la posizione corrente e il limite. (Ereditato da Buffer) |
Reset() |
Reimposta la posizione del buffer nella posizione contrassegnata in precedenza. (Ereditato da Buffer) |
Rewind() |
Riavvolge questo buffer. (Ereditato da Buffer) |
SetHandle(IntPtr, JniHandleOwnership) |
Imposta la proprietà Handle. (Ereditato da Object) |
Slice() |
Crea un nuovo buffer di byte il cui contenuto è una sottosequenza condivisa del contenuto del buffer. |
Slice(Int32, Int32) |
Crea un nuovo buffer di byte il cui contenuto è una sottosequenza condivisa del contenuto del buffer. |
Slice(Int32, Int32) |
Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto del buffer. (Ereditato da Buffer) |
ToArray<T>() |
Buffer di byte. (Ereditato da Object) |
ToString() |
Restituisce una rappresentazione di stringa dell'oggetto. (Ereditato da Object) |
UnregisterFromRuntime() |
Buffer di byte. (Ereditato da Object) |
Wait() |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>. (Ereditato da Object) |
Wait(Int64) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo>< una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Wait(Int64, Int32) |
Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo>< una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale. (Ereditato da Object) |
Wrap(Byte[]) |
Esegue il wrapping di una matrice di byte in un buffer. |
Wrap(Byte[], Int32, Int32) |
Esegue il wrapping di una matrice di byte in un buffer. |
Implementazioni dell'interfaccia esplicita
IComparable.CompareTo(Object) |
Buffer di byte. |
IJavaPeerable.Disposed() |
Buffer di byte. (Ereditato da Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Buffer di byte. (Ereditato da Object) |
IJavaPeerable.Finalized() |
Buffer di byte. (Ereditato da Object) |
IJavaPeerable.JniManagedPeerState |
Buffer di byte. (Ereditato da Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Buffer di byte. (Ereditato da Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Buffer di byte. (Ereditato da Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Buffer di byte. (Ereditato da Object) |
Metodi di estensione
JavaCast<TResult>(IJavaObject) |
Esegue una conversione del tipo di tipo controllato dal runtime Android. |
JavaCast<TResult>(IJavaObject) |
Buffer di byte. |
GetJniTypeName(IJavaPeerable) |
Buffer di byte. |