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 auf Bytepuffern:
<ul>
<Li>
Absolute und relative #get() <i>get</i>
Methoden #put(byte) <i>put</i>
, 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 einen anderen Bytepuffer in diesen Puffer übertragen;
</Li>
<Li>
Absolute und relative #getChar() <i>get</i>
Methoden #putChar(char) <i>put</i>
, die Werte anderer Grundtypen lesen und schreiben, sie in Bytereihenfolgen in eine bestimmte Bytereihenfolge übersetzen und aus diesen schreiben;
</Li>
<Li>
Methoden zum Erstellen von Ansichtspuffern, mit denen ein Bytepuffer als Puffer angezeigt werden kann, der Werte eines anderen Grundtyps enthält; und
</Li>
<Li>
Methoden für #compact compacting
, #duplicate duplicating
, und #slice slicing
ein Bytepuffer.
</Li>
</ul>
Bytepuffer können entweder durch #allocate <i>allocation</i>
erstellt werden, wodurch Speicherplatz für die Puffer zugewiesen wird.
Inhalt oder durch #wrap(byte[]) <i>wrapping</i>
ein vorhandenes Bytearray in einen Puffer.
"direct"><h2> Direct vs. non-direct buffers </h2>
Ein Bytepuffer ist entweder direkt oder nicht direkt. Angesichts eines direkten Bytepuffers versucht der virtuelle Java-Computer, systemeigene E/A-Vorgänge direkt darauf auszuführen. Das heißt, es wird versucht, das Kopieren des Inhalts des Puffers in einen Zwischenpuffer vor (oder nach) jedem Aufruf einer der systemeigenen E/A-Vorgänge des zugrunde liegenden Betriebssystems zu vermeiden.
Ein direkter Bytepuffer kann durch Aufrufen der #allocateDirect(int) allocateDirect
Factorymethode dieser Klasse erstellt werden. Die von dieser Methode zurückgegebenen Puffer weisen in der Regel etwas höhere Zuordnungs- und Deallocation-Kosten auf als nicht direkte Puffer. Der Inhalt von direkten Puffern kann sich außerhalb des normalen garbage-collection heap befinden, sodass ihre Auswirkungen auf den Speicherbedarf einer Anwendung möglicherweise nicht offensichtlich sind. Daher wird empfohlen, direkte Puffer hauptsächlich für große, langlebige Puffer zuzuordnen, die den systemeigenen E/A-Vorgängen des zugrunde liegenden Systems unterliegen. Im Allgemeinen empfiehlt es sich, direkte Puffer nur zuzuweisen, wenn sie eine messbare Verstärkung der Programmleistung erzielen.
Ein direkter Bytepuffer kann auch von java.nio.channels.FileChannel#map mapping
einem Bereich einer Datei direkt in den Arbeitsspeicher erstellt werden. Eine Implementierung der Java-Plattform kann optional die Erstellung von direkten Bytepuffern aus systemeigenem Code über JNI unterstützen. Wenn eine Instanz dieser Arten von Puffern auf einen nicht zugänglichen Speicherbereich verweist, ändert ein Versuch, auf diesen Bereich zuzugreifen, den Inhalt des Puffers nicht und führt zu einer nicht angegebenen Ausnahme, die entweder zum Zeitpunkt des Zugriffs oder zu einem späteren Zeitpunkt ausgelöst wird.
Ob ein Bytepuffer direkt oder nicht direkt ist, kann durch aufrufende #isDirect isDirect
Methode bestimmt werden. Diese Methode wird bereitgestellt, damit die explizite Pufferverwaltung im leistungskritischen Code erfolgen kann.
"bin"><h2> Access to binary data </h2>
Diese Klasse definiert Methoden zum Lesen und Schreiben von Werten aller anderen Grundtypen mit Ausnahme boolean
von . Primitive Werte werden gemäß der aktuellen Bytereihenfolge des Puffers in Bytesequenzen (oder aus) ü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 absoluter und relativer 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
. Die Indexparameter der absoluten Get - und Put-Methoden beziehen sich auf Bytes und nicht auf den Typ, der gelesen oder geschrieben wird.
"Views">
Für den Zugriff auf homogene Binärdaten, d. h. Sequenzen von Werten desselben Typs, definiert diese Klasse Methoden, die Ansichten eines bestimmten Bytepuffers erstellen können. Ein Ansichtspuffer ist einfach ein anderer Puffer, dessen Inhalt vom Bytepuffer unterstützt wird. Änderungen am Inhalt des Bytepuffers werden im Ansichtspuffer angezeigt und umgekehrt; Die Position, das Limit und die Markierungswerte der beiden Puffer sind unabhängig. Die #asFloatBuffer() asFloatBuffer
Methode erstellt z. B. eine Instanz der FloatBuffer
Klasse, die vom Bytepuffer unterstützt wird, auf dem die Methode aufgerufen wird. Entsprechende Ansichtserstellungsmethoden werden für die Typen char
, , , int
, und long
double
. short
Ansichtspuffer haben drei wichtige Vorteile gegenüber den familienspezifischen Get - und Put-Methoden , die oben beschrieben werden:
<ul>
<Li>
Ein Ansichtspuffer wird nicht in Bezug auf Bytes, sondern in Bezug auf die typspezifische Größe seiner Werte indiziert;
</Li>
<Li>
Ein Ansichtspuffer bietet relative Massenvorgänge und Put-Methoden, mit denen zusammenhängende Werteabfolgen zwischen einem Puffer und einem Array oder einem anderen Puffer desselben Typs übertragen werden können;
</Li>
<Li>
Ein Ansichtspuffer ist potenziell viel effizienter, da er direkt ist, wenn und nur dann, wenn der zugrunde liegende Bytepuffer direkt ist.
</Li>
</ul>
Die Bytereihenfolge eines Ansichtspuffers wird so festgelegt, dass er zum Zeitpunkt der Erstellung der Ansicht dem Bytepuffer entspricht.
<h2> Aufrufverkettung </h2>
Methoden in dieser Klasse, die andernfalls keinen Wert zurückgeben sollen, werden angegeben, um den Puffer zurückzugeben, für den sie aufgerufen werden. Dadurch können Methodenaufrufe verkettet werden.
Die Abfolge von 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 1.4 hinzugefügt.
Java-Dokumentation für java.nio.ByteBuffer
.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die vom Android Open Source-Projekt erstellt und freigegeben werden und gemäß den in der Creative Commons 2.5 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 Laufzeit aufgerufen. |
Eigenschaften
Char |
Gibt das Zeichen an der aktuellen Position zurück und erhöht die Position um 2. |
Class |
Gibt die Laufzeitklasse dieses Werts |
Double |
Gibt das Double an der aktuellen Position zurück und erhöht die Position um 8. |
Float |
Gibt den Gleitkomma an der aktuellen Position zurück und erhöht die Position um 4. |
Handle |
Das Handle für die zugrunde liegende Android-Instanz. (Geerbt von Object) |
HasArray |
Gibt an, ob dieser Puffer von einem barrierefreien Bytearray unterstützt wird. |
HasRemaining |
Gibt an, ob elemente zwischen der aktuellen Position und dem Grenzwert 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 die lange an der aktuellen Position zurück und erhöht die Position um 8. |
PeerReference |
Ein Bytepuffer. (Geerbt von Object) |
Short |
Gibt die Kurze 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 Untermenge des Inhalts dieses Puffers ist. |
AlignmentOffset(Int32, Int32) |
Gibt die Speicheradresse zurück, die auf das Byte am angegebenen Index zeigt, modulus die angegebene Einheitengröße. |
Allocate(Int32) |
Weist einen neuen Bytepuffer zu. |
AllocateDirect(Int32) |
Weist einen neuen direkten Bytepuffer zu. |
ArrayOffset() |
Gibt den Offset innerhalb des Sicherungsarrays 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 Doppelpuffer. |
AsFloatBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als Float-Puffer. |
AsIntBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als Int-Puffer. |
AsLongBuffer() |
Erstellt eine Ansicht dieses Bytepuffers als langer Puffer. |
AsReadOnlyBuffer() |
Erstellt einen neuen, schreibgeschützten Bytepuffer, der den Inhalt dieses Puffers freigibt. |
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 Massen-Get-Methode. |
Get(Byte[], Int32, Int32) |
Relative Massen-Get-Methode. |
Get(Int32) |
Absolute Get-Methode . |
GetChar(Int32) |
Absolute Get-Methode zum Lesen eines Zeichenwerts. |
GetDirectBufferAddress() |
Ein Bytepuffer. (Geerbt von Buffer) |
GetDouble(Int32) |
Absolute Get-Methode zum Lesen eines Doppeltwerts. |
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 langen 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 bestimmt, dass keine weiteren Verweise 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 und gibt den relativen Index des ersten Konflikts zwischen diesem Puffer und einem bestimmten Puffer zurück. |
Notify() |
Aktiviert einen einzelnen Thread, der auf dem Monitor dieses Objekts wartet. (Geerbt von Object) |
NotifyAll() |
Aktiviert alle Threads, die auf dem 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 Massenvorgangsmethode (optionaler Vorgang). |
Put(Byte[], Int32, Int32) |
Relative Massenvorgangsmethode (optionaler Vorgang). |
Put(ByteBuffer) |
Relative Massenvorgangsmethode (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 Zeichenwerts (optionaler Vorgang). |
PutChar(Int32, Char) |
Absolute Put-Methode zum Schreiben eines Zeichenwerts (optionaler Vorgang). |
PutDouble(Double) |
Relative Put-Methode zum Schreiben eines doppelten Werts (optionaler Vorgang). |
PutDouble(Int32, Double) |
Absolute Put-Methode zum Schreiben eines doppelten 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 langen Werts (optionaler Vorgang). |
PutLong(Int64) |
Relative Put-Methode zum Schreiben eines langen 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() |
Dieser Puffer wird zurückspulen. (Geerbt von Buffer) |
SetHandle(IntPtr, JniHandleOwnership) |
Legt die Handle-Eigenschaft fest. (Geerbt von Object) |
Slice() |
Erstellt einen neuen Bytepuffer, dessen Inhalt eine freigegebene Untermenge des Inhalts dieses Puffers ist. |
Slice(Int32, Int32) |
Erstellt einen neuen Bytepuffer, dessen Inhalt eine freigegebene Untermenge des Inhalts dieses Puffers ist. |
Slice(Int32, Int32) |
Erstellt einen neuen Puffer, dessen Inhalt eine freigegebene Untermenge 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 wach ist, in der Regel durch em benachrichtigt/em> oder <em>unterbrochen</em>.<>< (Geerbt von Object) |
Wait(Int64) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</em> oder bis eine bestimmte Menge an Echtzeit verstrichen ist. (Geerbt von Object) |
Wait(Int64, Int32) |
Bewirkt, dass der aktuelle Thread wartet, bis er wach ist, in der Regel durch <em>benachrichtigt</em> oder <em>unterbrochen</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 android-laufzeitgecheckte Typkonvertierung aus. |
JavaCast<TResult>(IJavaObject) |
Ein Bytepuffer. |
GetJniTypeName(IJavaPeerable) |
Ein Bytepuffer. |