Share via


ByteBuffer Klasse

Definition

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
ByteBuffer
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 duplicatingund #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 booleanvon . 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, , intlongund doubledefiniert. 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, longintund doubledefiniert.

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 Objectzurück.

(Geerbt von Object)
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.

Gilt für: