ByteBuffer Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ein Bytepuffer.
[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
- Vererbung
- Abgeleitet
- Attribute
- Implementiert
Hinweise
Ein Bytepuffer.
Diese Klasse definiert sechs Kategorien von Vorgängen für Bytepuffer:
<ul>
<Li>
Absolute und relative #get() <i>get</i>
Methoden und #put(byte) <i>put</i>
Methoden, die einzelne Bytes lesen und schreiben;
</Li>
<Li>
Relative #get(byte[]) <i>bulk get</i>
Methoden, die zusammenhängende Bytesequenzen aus diesem Puffer in ein Array übertragen;
</Li>
<Li>
Relative #put(byte[]) <i>bulk put</i>
Methoden, die zusammenhängende Bytesequenzen aus einem Bytearray oder einem anderen Bytepuffer in diesen Puffer übertragen;
</Li>
<Li>
Absolute und relative #getChar() <i>get</i>
Methoden, #putChar(char) <i>put</i>
die Werte anderer primitiver Typen lesen und schreiben und diese in und aus Sequenzen von Bytes in einer bestimmten Bytereihenfolge übersetzen;
</Li>
<Li>
Methoden zum Erstellen von Ansichtspuffern, mit denen ein Bytepuffer als Puffer angezeigt werden kann, der Werte eines anderen primitiven Typs enthält; Und
</Li>
<Li>
Methoden für #compact compacting
, #duplicate duplicating
und #slice slicing
einen Bytepuffer.
</Li>
</ul>
Bytepuffer können entweder von #allocate <i>allocation</i>
erstellt werden, wodurch Speicherplatz für den Puffer zugewiesen wird.
oder durch #wrap(byte[]) <i>wrapping</i>
ein vorhandenes Bytearray in einen Puffer.
"direct"><h2> Direct im Vergleich zu nicht direkten Puffern </h2>
Ein Bytepuffer ist entweder direkt oder nicht direkt. Bei einem direkten Bytepuffer versucht der virtuelle Java-Computer, native E/A-Vorgänge direkt darauf auszuführen. Das heißt, es wird versucht, das Kopieren des Pufferinhalts in einen Zwischenpuffer vor (oder nach) jedem Aufruf eines der nativen E/A-Vorgänge des zugrunde liegenden Betriebssystems zu vermeiden.
Durch Aufrufen der #allocateDirect(int) allocateDirect
Factory-Methode dieser Klasse kann ein direkter Bytepuffer erstellt werden. Die von dieser Methode zurückgegebenen Puffer weisen in der Regel etwas höhere Zuordnungs- und Deallocationkosten auf als nicht direkte Puffer. Der Inhalt direkter Puffer kann sich außerhalb des normalen Garbage Collection-Heaps befinden, sodass ihre Auswirkungen auf den Arbeitsspeicherbedarf einer Anwendung möglicherweise nicht offensichtlich sind. Es wird daher empfohlen, direkte Puffer in erster Linie für große, langlebige Puffer zuzuweisen, die den nativen E/A-Vorgängen des zugrunde liegenden Systems unterliegen. Im Allgemeinen ist es am besten, direkte Puffer nur dann zuzuweisen, wenn sie einen messbaren Gewinn bei der Programmleistung erzielen.
Ein direkter Bytepuffer kann auch von java.nio.channels.FileChannel#map mapping
einer Region einer Datei direkt im Arbeitsspeicher erstellt werden. Eine Implementierung der Java-Plattform kann optional die Erstellung direkter Bytepuffer aus nativem Code über JNI unterstützen. Wenn sich ein instance einer dieser Puffertypen auf einen nicht zugänglichen Speicherbereich bezieht, ändert ein Versuch, auf diese Region zuzugreifen, den Inhalt des Puffers nicht und führt dazu, dass eine nicht spezifizierte Ausnahme entweder zum Zeitpunkt des Zugriffs oder zu einem späteren Zeitpunkt ausgelöst wird.
Ob ein Bytepuffer direkt oder nicht direkt ist, kann durch Aufrufen seiner #isDirect isDirect
Methode bestimmt werden. Diese Methode wird bereitgestellt, damit die explizite Pufferverwaltung in leistungskritischem Code erfolgen kann.
"bin"><h2> Zugriff auf Binärdaten </h2>
Diese Klasse definiert Methoden zum Lesen und Schreiben von Werten aller anderen primitiven Typen mit Ausnahme boolean
von . Primitive Werte werden gemäß der aktuellen Bytereihenfolge des Puffers in (oder aus) Bytesequenzen übersetzt, die über die #order order
Methoden abgerufen und geändert werden können. Bestimmte Bytereihenfolgen werden durch Instanzen der ByteOrder
-Klasse dargestellt. Die anfängliche Reihenfolge eines Bytepuffers ist immer ByteOrder#BIG_ENDIAN BIG_ENDIAN
.
Für den Zugriff auf heterogene Binärdaten, d. h. Sequenzen von Werten unterschiedlicher Typen, definiert diese Klasse eine Familie von absoluten und relativen Get - und Put-Methoden für jeden Typ. Für 32-Bit-Gleitkommawerte definiert diese Klasse beispielsweise Folgendes:
<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>
Entsprechende Methoden werden für die Typen char
, short
, , int
long
und double
definiert. Die Indexparameter der absoluten Get - und Put-Methoden beziehen sich auf Bytes und nicht auf den Typ, der gelesen oder geschrieben wird.
"Ansichten">
Für den Zugriff auf homogene Binärdaten, d. h. Sequenzen von Werten desselben Typs, definiert diese Klasse Methoden, die Ansichten eines angegebenen Bytepuffers erstellen können. Ein Ansichtspuffer ist einfach ein anderer Puffer, dessen Inhalt vom Bytepuffer unterstützt wird. Änderungen am Inhalt des Bytepuffers sind im Ansichtspuffer sichtbar und umgekehrt. Die Positions-, Grenzwert- und Markwerte der beiden Puffer sind unabhängig. Die #asFloatBuffer() asFloatBuffer
-Methode erstellt beispielsweise eine instance der -Klasse, die FloatBuffer
durch den Bytepuffer unterstützt wird, auf dem die Methode aufgerufen wird. Entsprechende Methoden zur Ansichtserstellung werden für die Typen char
, , short
, long
int
und double
definiert.
View-Puffer haben drei wichtige Vorteile gegenüber den Familien typspezifischer Get - und Put-Methoden , die oben beschrieben wurden:
<ul>
<Li>
Ein Sichtpuffer ist nicht in Bytes, sondern in Bezug auf die typspezifische Größe seiner Werte indiziert.
</Li>
<Li>
Ein Ansichtspuffer bietet relative Massenablösungs - und -put-Methoden , die zusammenhängende Sequenzen von Werten zwischen einem Puffer und einem Array oder einem anderen Puffer desselben Typs übertragen können. Und
</Li>
<Li>
Ein Ansichtspuffer ist potenziell viel effizienter, da er direkt ist, wenn und nur, wenn sein unterstützungsbyterierter Puffer direkt ist.
</Li>
</ul>
Die Bytereihenfolge eines Ansichtspuffers ist so festgelegt, dass sie zum Zeitpunkt der Erstellung der Ansicht die des Bytepuffers ist.
<h2> Aufrufverkettung </h2>
Methoden in dieser Klasse, die andernfalls keinen Wert zurückzugeben haben, werden angegeben, um den Puffer zurückzugeben, für den sie aufgerufen werden. Dadurch können Methodenaufrufe verkettet werden.
Die Reihenfolge der Anweisungen
<Blockquote>
bb.putInt(0xCAFEBABE);
bb.putShort(3);
bb.putShort(45);
</Blockquote>
kann z. B. durch die einzelne Anweisung ersetzt werden.
<Blockquote>
bb.putInt(0xCAFEBABE).putShort(3).putShort(45);
</Blockquote>
In Version 1.4 hinzugefügt.
Java-Dokumentation für java.nio.ByteBuffer
.
Teile dieser Seite sind Änderungen, die auf Arbeiten basieren, die vom Android Open Source Project erstellt und freigegeben wurden und gemäß den In der Attribution License beschriebenen Begriffen verwendet werden.
Konstruktoren
ByteBuffer(IntPtr, JniHandleOwnership) |
Ein Konstruktor, der beim Erstellen verwalteter Darstellungen von JNI-Objekten verwendet wird; wird von der Runtime aufgerufen. |
Eigenschaften
Char |
Gibt das Zeichen an der aktuellen Position zurück und erhöht die Position um 2. |
Class |
Gibt die Laufzeitklasse dieses |
Double |
Gibt das Double an der aktuellen Position zurück und erhöht die Position um 8. |
Float |
Gibt den Float an der aktuellen Position zurück und erhöht die Position um 4. |
Handle |
Das Handle für die zugrunde liegende Android-instance. (Geerbt von Object) |
HasArray |
Gibt an, ob dieser Puffer von einem zugänglichen Bytearray unterstützt wird. |
HasRemaining |
Gibt an, ob zwischen der aktuellen Position und dem Grenzwert Elemente vorhanden sind. (Geerbt von Buffer) |
Int |
Gibt den int an der aktuellen Position zurück und erhöht die Position um 4. |
IsDirect |
Gibt true zurück, wenn es sich um einen direkten Puffer handelt. (Geerbt von Buffer) |
IsReadOnly |
Gibt an, ob dieser Puffer schreibgeschützt ist. (Geerbt von Buffer) |
JniIdentityHashCode |
Ein Bytepuffer. (Geerbt von Object) |
JniPeerMembers |
Ein Bytepuffer. |
Long |
Gibt den Long-Wert an der aktuellen Position zurück und erhöht die Position um 8. |
PeerReference |
Ein Bytepuffer. (Geerbt von Object) |
Short |
Gibt den Short an der aktuellen Position zurück und erhöht die Position um 2. |
ThresholdClass |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
ThresholdType |
Diese API unterstützt die Mono für Android-Infrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code vorgesehen. |
Methoden
AlignedSlice(Int32) |
Erstellt einen neuen Bytepuffer, dessen Inhalt eine freigegebene und ausgerichtete Untersequenz des Inhalts dieses Puffers ist. |
AlignmentOffset(Int32, Int32) |
Gibt die Speicheradresse zurück, die auf das Byte am angegebenen Index zeigt und die angegebene Einheitsgröße moduliert. |
Allocate(Int32) |
Ordnet einen neuen Bytepuffer zu. |
AllocateDirect(Int32) |
Ordnet einen neuen direkten Bytepuffer zu. |
ArrayOffset() |
Gibt den Offset innerhalb des Hintergrundarrays dieses Puffers des ersten Elements des Puffers zurück, (optionaler Vorgang). |
AsCharBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als Zeichenpuffer. |
AsDoubleBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als doppelten Puffer. |
AsFloatBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als Floatpuffer. |
AsIntBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als int-Puffer. |
AsLongBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als long-Puffer. |
AsReadOnlyBuffer() |
Erstellt einen neuen schreibgeschützten Bytepuffer, der den Inhalt dieses Puffers gemeinsam verwendet. |
AsShortBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als kurzen Puffer. |
Capacity() |
Gibt die Kapazität dieses Puffers zurück. (Geerbt von Buffer) |
Clear() |
Löscht diesen Puffer. (Geerbt von Buffer) |
Clone() |
Erstellt und gibt eine Kopie dieses Objekts zurück. (Geerbt von Object) |
Compact() |
Komprimiert diesen Puffer (optionaler Vorgang). |
CompareTo(ByteBuffer) |
Vergleicht diesen Puffer mit einem anderen. |
Dispose() |
Ein Bytepuffer. (Geerbt von Object) |
Dispose(Boolean) |
Ein Bytepuffer. (Geerbt von Object) |
Duplicate() |
Erstellt einen neuen Bytepuffer, der den Inhalt dieses Puffers gemeinsam verwendet. |
Equals(Object) |
Gibt an, ob ein anderes Objekt "gleich" diesem objekt ist. (Geerbt von Object) |
Flip() |
Kippt diesen Puffer. (Geerbt von Buffer) |
Get() |
Relative get-Methode . |
Get(Byte[]) |
Relative Massenabholmethode . |
Get(Byte[], Int32, Int32) |
Relative Massenabholmethode . |
Get(Int32) |
Absolute get-Methode . |
GetChar(Int32) |
Absolute get-Methode zum Lesen eines char-Werts. |
GetDirectBufferAddress() |
Ein Bytepuffer. (Geerbt von Buffer) |
GetDouble(Int32) |
Absolute get-Methode zum Lesen eines Double-Werts. |
GetFloat(Int32) |
Absolute get-Methode zum Lesen eines Float-Werts. |
GetHashCode() |
Gibt einen Hashcodewert für das Objekt zurück. (Geerbt von Object) |
GetInt(Int32) |
Absolute get-Methode zum Lesen eines int-Werts. |
GetLong(Int32) |
Absolute get-Methode zum Lesen eines long-Werts. |
GetShort(Int32) |
Absolute get-Methode zum Lesen eines kurzen Werts. |
JavaFinalize() |
Wird vom Garbage Collector für ein Objekt aufgerufen, wenn die Garbage Collection feststellt, dass keine Verweise mehr auf das Objekt vorhanden sind. (Geerbt von Object) |
Limit() |
Gibt den Grenzwert dieses Puffers zurück. (Geerbt von Buffer) |
Limit(Int32) |
Legt den Grenzwert dieses Puffers fest. (Geerbt von Buffer) |
Mark() |
Legt die Markierung dieses Puffers an seiner Position fest. (Geerbt von Buffer) |
Mismatch(ByteBuffer) |
Sucht den relativen Index des ersten Konflikts zwischen diesem Puffer und einem bestimmten Puffer und gibt diesen zurück. |
Notify() |
Aktiviert einen einzelnen Thread, der auf den Monitor dieses Objekts wartet. (Geerbt von Object) |
NotifyAll() |
Aktiviert alle Threads, die auf den Monitor dieses Objekts warten. (Geerbt von Object) |
Order() |
Ruft die Bytereihenfolge dieses Puffers ab. |
Order(ByteOrder) |
Ändert die Bytereihenfolge dieses Puffers. |
Position() |
Gibt die Position dieses Puffers zurück. (Geerbt von Buffer) |
Position(Int32) |
Legt die Position dieses Puffers fest. (Geerbt von Buffer) |
Put(Byte[]) |
Relative Bulk Put-Methode (optionaler Vorgang). |
Put(Byte[], Int32, Int32) |
Relative Bulk Put-Methode (optionaler Vorgang). |
Put(ByteBuffer) |
Relative Bulk Put-Methode (optionaler Vorgang). |
Put(Int32, SByte) |
Absolute put-Methode (optionaler Vorgang). |
Put(SByte) |
Relative Put-Methode (optionaler Vorgang). |
PutChar(Char) |
Relative put-Methode zum Schreiben eines char-Werts (optionaler Vorgang). |
PutChar(Int32, Char) |
Absolute put-Methode zum Schreiben eines char-Werts (optionaler Vorgang). |
PutDouble(Double) |
Relative put-Methode zum Schreiben eines doppelten Werts (optionaler Vorgang). |
PutDouble(Int32, Double) |
Absolute Put-Methode zum Schreiben eines Double-Werts (optionaler Vorgang). |
PutFloat(Int32, Single) |
Absolute put-Methode zum Schreiben eines float-Werts (optionaler Vorgang). |
PutFloat(Single) |
Relative put-Methode zum Schreiben eines float-Werts (optionaler Vorgang). |
PutInt(Int32) |
Relative put-Methode zum Schreiben eines int-Werts (optionaler Vorgang). |
PutInt(Int32, Int32) |
Absolute put-Methode zum Schreiben eines int-Werts (optionaler Vorgang). |
PutLong(Int32, Int64) |
Absolute Put-Methode zum Schreiben eines long-Werts (optionaler Vorgang). |
PutLong(Int64) |
Relative Put-Methode zum Schreiben eines long-Werts (optionaler Vorgang). |
PutShort(Int16) |
Relative Put-Methode zum Schreiben eines kurzen Werts (optionaler Vorgang). |
PutShort(Int32, Int16) |
Absolute Put-Methode zum Schreiben eines kurzen Werts (optionaler Vorgang). |
Remaining() |
Gibt die Anzahl der Elemente zwischen der aktuellen Position und dem Grenzwert zurück. (Geerbt von Buffer) |
Reset() |
Setzt die Position dieses Puffers auf die zuvor markierte Position zurück. (Geerbt von Buffer) |
Rewind() |
Zurückspulen dieses Puffers. (Geerbt von Buffer) |
SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
Slice() |
Erstellt einen neuen Bytepuffer, dessen Inhalt eine freigegebene Untersequenz des Inhalts dieses Puffers ist. |
Slice(Int32, Int32) |
Erstellt einen neuen Bytepuffer, dessen Inhalt eine freigegebene Untersequenz des Inhalts dieses Puffers ist. |
Slice(Int32, Int32) |
Erstellt einen neuen Puffer, dessen Inhalt eine freigegebene Untersequenz des Inhalts dieses Puffers ist. (Geerbt von Buffer) |
ToArray<T>() |
Ein Bytepuffer. (Geerbt von Object) |
ToString() |
Gibt eine Zeichenfolgendarstellung des Objekts zurück. (Geerbt von Object) |
UnregisterFromRuntime() |
Ein Bytepuffer. (Geerbt von Object) |
Wait() |
Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch <>Benachrichtigung</em> oder <em>interrupted</em>. (Geerbt von Object) |
Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch>< Benachrichtigung</em> oder <em>interrupted</em>, oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er aktiviert ist, in der Regel durch>< Benachrichtigung</em> oder <em>interrupted</em>, oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Wrap(Byte[]) |
Umschließt ein Bytearray in einen Puffer. |
Wrap(Byte[], Int32, Int32) |
Umschließt ein Bytearray in einen Puffer. |
Explizite Schnittstellenimplementierungen
IComparable.CompareTo(Object) |
Ein Bytepuffer. |
IJavaPeerable.Disposed() |
Ein Bytepuffer. (Geerbt von Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Ein Bytepuffer. (Geerbt von Object) |
IJavaPeerable.Finalized() |
Ein Bytepuffer. (Geerbt von Object) |
IJavaPeerable.JniManagedPeerState |
Ein Bytepuffer. (Geerbt von Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Ein Bytepuffer. (Geerbt von Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Ein Bytepuffer. (Geerbt von Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Ein Bytepuffer. (Geerbt von Object) |
Erweiterungsmethoden
JavaCast<TResult>(IJavaObject) |
Führt eine Typkonvertierung mit Überprüfung der Android-Laufzeit aus. |
JavaCast<TResult>(IJavaObject) |
Ein Bytepuffer. |
GetJniTypeName(IJavaPeerable) |
Ein Bytepuffer. |