Share via


ByteBuffer 類別

定義

位元組緩衝區。

[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
繼承
ByteBuffer
衍生
屬性
實作

備註

位元組緩衝區。

此類別定義位元組緩衝區的六個作業類別:

<ul>

<li>

可讀取和寫入單一位元組的絕對和相對 #get() <i>get</i>#put(byte) <i>put</i> 方法;

</李>

<li>

將連續位元組序列從這個緩衝區傳送到數位的相對 #get(byte[]) <i>bulk get</i> 方法;

</李>

<li>

將連續位元組序列從位元組陣列或其他位元組緩衝區傳送到這個緩衝區的相對 #put(byte[]) <i>bulk put</i> 方法;

</李>

<li>

讀取和寫入其他基本型別值的絕對和相對 #getChar() <i>get</i>#putChar(char) <i>put</i> 方法,並以特定位元節順序來迴轉譯位元組序列;

</李>

<li>

建立 檢視緩衝區的方法,允許將位元組緩衝區視為包含其他基本類型值的緩衝區;和

</李>

<li>

#compact compacting#duplicate duplicating#slice slicing 位元組緩衝區的方法。

</李>

</ul>

您可以透過 建立 #allocate <i>allocation</i>位元組緩衝區,以配置緩衝區的空間

內容,或由 #wrap(byte[]) <i>wrapping</i> 現有的位元組數位組放入緩衝區。

“direct”><h2> Direct 非直接緩衝區 </h2>

位元組緩衝區為 直接非直接。 假設有直接位元組緩衝區,Java 虛擬機會盡最大努力直接在它上執行原生 I/O 作業。 也就是說,它會嘗試避免將緩衝區的內容複製到 (或從中) 中繼緩衝區,再 (或之後) 其中一個基礎操作系統原生 I/O 作業的每個調用。

叫用這個類別的 #allocateDirect(int) allocateDirect Factory 方法,即可建立直接位元組緩衝區。 這個方法傳回的緩衝區通常比非直接緩衝區配置和解除分配成本更高。 直接緩衝區的內容可能位於一般垃圾收集堆積之外,因此對應用程式記憶體使用量的影響可能並不明顯。 因此,建議直接緩衝區主要配置給受限於基礎系統原生 I/O 作業的大型長時間存留緩衝區。 一般而言,只有在直接緩衝區產生可測量的程式效能提升時,才最好配置直接緩衝區。

直接位元組緩衝區也可以由 java.nio.channels.FileChannel#map mapping 檔案的區域直接建立到記憶體中。 Java 平台的實作可以選擇性地支援透過 JNI 從原生程式代碼建立直接位元組緩衝區。 如果這類緩衝區的實例是指記憶體無法存取的區域,則嘗試存取該區域不會變更緩衝區的內容,而且會導致在存取時或稍後擲回未指定的例外狀況。

位元組緩衝區是直接或非直接的,都可以藉由叫用其 #isDirect isDirect 方法來決定。 提供這個方法,讓明確的緩衝區管理可以在效能關鍵性程序代碼中完成。

“bin”><h2 二進位數據 </h2> 的存取權>

這個類別會定義讀取和寫入所有其他基本型別值的方法,但 除外 boolean。 基本值會根據緩衝區的目前位元組順序,轉譯成 (或從) 位元組序列轉譯,這些順序可能會透過 #order order 方法擷取和修改。 特定位元組順序是由 類別的 ByteOrder 實例表示。 位元組緩衝區的初始順序一律 ByteOrder#BIG_ENDIAN BIG_ENDIAN為 。

若要存取異質二進位數據,也就是不同類型的值序列,此類別會定義每個類型的絕對和相對 getput 方法系列。 例如,針對32位浮點值,這個類別會定義:

<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>

系統會針對 、shortintlongdouble類型char定義對應的方法。 絕對 getput 方法的索引參數是以位元組為單位,而不是讀取或寫入的類型。

“views”>

若要存取同質二進位數據,也就是相同類型的值序列,這個類別會定義方法,這些方法可以建立指定位元組緩衝區的 檢視檢視緩衝區只是另一個緩衝區,其內容是由位元組緩衝區支援。 位元組緩衝區內容的變更將會顯示在檢視緩衝區中,反之亦然;兩個緩衝區的位置、限制和標記值都是獨立的。 #asFloatBuffer() asFloatBuffer例如,方法會建立 類別的FloatBuffer實例,該實例是由叫用 方法的位元組緩衝區所支援。 系統會針對 、shortintlongdouble類型char定義對應的檢視建立方法。

檢視緩衝區對於上述類型特定 getput 方法系列有三個重要優點:

<ul>

<li>

檢視緩衝區的索引不是以位元組為單位,而是根據其值的類型特定大小來編製索引;

</李>

<li>

檢視緩衝區提供相對大量 取得放置 方法,這些方法可以在緩衝區與陣列或相同類型的其他緩衝區之間傳輸連續的值序列;和

</李>

<li>

檢視緩衝區可能更有效率,因為只有在其支援的位元組緩衝區是直接時,才會直接。

</李>

</ul>

檢視緩衝區的位元組順序會固定為檢視建立時其位元組緩衝區的位元組順序。

<h2> 叫用鏈結 </h2>

這個類別中沒有要傳回值的方法會指定,以傳回叫用它們的緩衝區。 這可讓方法調用鏈結。

語句序列

<blockquote>

bb.putInt(0xCAFEBABE);
            bb.putShort(3);
            bb.putShort(45);

</blockquote>

例如,可由單一語句取代

<blockquote>

bb.putInt(0xCAFEBABE).putShort(3).putShort(45);

</blockquote>

已在1.4中新增。

java.nio.ByteBufferJava 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據 中所述的詞彙使用。

建構函式

ByteBuffer(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

屬性

Char

傳回目前位置的 char,並將位置增加 2。

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Double

傳回目前位置的雙精度浮點數,並將位置增加 8。

Float

傳回目前位置的浮點數,並將位置增加 4。

Handle

基礎Android實例的句柄。

(繼承來源 Object)
HasArray

告知這個緩衝區是否由可存取的位元組數位的支援。

HasRemaining

告知目前位置和限制之間是否有任何元素。

(繼承來源 Buffer)
Int

傳回目前位置的 int,並將位置增加 4。

IsDirect

如果這是直接緩衝區,則傳回 true。

(繼承來源 Buffer)
IsReadOnly

指出這個緩衝區是否為唯讀。

(繼承來源 Buffer)
JniIdentityHashCode

位元組緩衝區。

(繼承來源 Object)
JniPeerMembers

位元組緩衝區。

Long

傳回目前位置的long,並將位置增加8。

PeerReference

位元組緩衝區。

(繼承來源 Object)
Short

傳回目前位置的簡短值,並將位置增加 2。

ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

方法

AlignedSlice(Int32)

建立新的位元組緩衝區,其內容是這個緩衝區內容的共用和對齊子序列。

AlignmentOffset(Int32, Int32)

傳回記憶體位址,指向指定索引處的位元組,將指定的單位大小模數。

Allocate(Int32)

配置新的位元組緩衝區。

AllocateDirect(Int32)

配置新的直接位元組緩衝區。

ArrayOffset()

傳回緩衝區第一個元素   之緩衝區備份陣列內的位移;) (選擇性作業

AsCharBuffer()

建立這個位元組緩衝區的檢視作為char緩衝區。

AsDoubleBuffer()

建立這個位元組緩衝區的檢視做為雙緩衝區。

AsFloatBuffer()

建立這個位元組緩衝區的檢視作為浮點緩衝區。

AsIntBuffer()

建立這個位元組緩衝區的檢視作為 int 緩衝區。

AsLongBuffer()

建立這個位元組緩衝區的檢視做為長緩衝區。

AsReadOnlyBuffer()

建立共用此緩衝區內容的新只讀位元節緩衝區。

AsShortBuffer()

建立這個位元組緩衝區的檢視作為簡短緩衝區。

Capacity()

傳回這個緩衝區的容量。

(繼承來源 Buffer)
Clear()

清除此緩衝區。

(繼承來源 Buffer)
Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Compact()

壓縮此緩衝區  ) (選擇性作業

CompareTo(ByteBuffer)

將此緩衝區與另一個緩衝區進行比較。

Dispose()

位元組緩衝區。

(繼承來源 Object)
Dispose(Boolean)

位元組緩衝區。

(繼承來源 Object)
Duplicate()

建立共用此緩衝區內容的新位元組緩衝區。

Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
Flip()

翻轉此緩衝區。

(繼承來源 Buffer)
Get()

相對 get 方法。

Get(Byte[])

相對大量 get 方法。

Get(Byte[], Int32, Int32)

相對大量 get 方法。

Get(Int32)

絕對 get 方法。

GetChar(Int32)

用於讀取 char 值的絕對 get 方法。

GetDirectBufferAddress()

位元組緩衝區。

(繼承來源 Buffer)
GetDouble(Int32)

用於讀取雙精度浮點數的絕對 get 方法。

GetFloat(Int32)

用於讀取浮點數值的絕對 get 方法。

GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
GetInt(Int32)

用於讀取 int 值的絕對 get 方法。

GetLong(Int32)

用於讀取長值的絕對 get 方法。

GetShort(Int32)

用於讀取簡短值的絕對 get 方法。

JavaFinalize()

當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。

(繼承來源 Object)
Limit()

傳回此緩衝區的限制。

(繼承來源 Buffer)
Limit(Int32)

設定此緩衝區的限制。

(繼承來源 Buffer)
Mark()

設定這個緩衝區在其位置的標記。

(繼承來源 Buffer)
Mismatch(ByteBuffer)

尋找並傳回這個緩衝區與指定緩衝區之間第一個不符的相對索引。

Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
Order()

擷取這個緩衝區的位元組順序。

Order(ByteOrder)

修改這個緩衝區的位元組順序。

Position()

傳回這個緩衝區的位置。

(繼承來源 Buffer)
Position(Int32)

設定此緩衝區的位置。

(繼承來源 Buffer)
Put(Byte[])

nbsp;  相對大量 放置 方法&; (選擇性作業)

Put(Byte[], Int32, Int32)

nbsp;  相對大量 放置 方法&; (選擇性作業)

Put(ByteBuffer)

nbsp;  相對大量 放置 方法&; (選擇性作業)

Put(Int32, SByte)

absolute put 方法   (選擇性作業)

Put(SByte)

relative put 方法   (選擇性作業)

PutChar(Char)

用於撰寫 char 值的相對 put 方法   (選擇性作業)

PutChar(Int32, Char)

將 char 值寫入   的絕對 put 方法; (選擇性作業)

PutDouble(Double)

用於撰寫 double 值的相對 put 方法   (選擇性作業)

PutDouble(Int32, Double)

在nbsp; 寫入雙精度浮點&數的絕對 put 方法; (選擇性作業)

PutFloat(Int32, Single)

在nbsp; 寫入浮點數&絕對 put 方法; (選擇性作業)

PutFloat(Single)

用於撰寫 float 值   的相對 put 方法; (選擇性作業)

PutInt(Int32)

用於撰寫 int 值的相對 put 方法   (選擇性作業)

PutInt(Int32, Int32)

絕對 put 方法,用於撰寫 int 值   (選擇性作業)

PutLong(Int32, Int64)

撰寫長值  的絕對 put 方法; (選擇性作業)

PutLong(Int64)

用於撰寫長值   的相對 put 方法; (選擇性作業)

PutShort(Int16)

用於撰寫簡短值   的相對 put 方法; (選擇性作業)

PutShort(Int32, Int16)

在nbsp; 撰寫簡短&值的絕對 put 方法; (選擇性作業)

Remaining()

傳回目前位置與限制之間的項目數目。

(繼承來源 Buffer)
Reset()

將此緩衝區的位置重設為先前標示的位置。

(繼承來源 Buffer)
Rewind()

倒轉此緩衝區。

(繼承來源 Buffer)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
Slice()

建立新的位元組緩衝區,其內容是這個緩衝區內容的共用子序列。

Slice(Int32, Int32)

建立新的位元組緩衝區,其內容是這個緩衝區內容的共用子序列。

Slice(Int32, Int32)

建立新的緩衝區,其內容是這個緩衝區內容的共用子序列。

(繼承來源 Buffer)
ToArray<T>()

位元組緩衝區。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

位元組緩衝區。

(繼承來源 Object)
Wait()

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>。><

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<>

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是em <notified/em>或<em>interrupted</em>,或直到經過一定數量的實時為止。<>

(繼承來源 Object)
Wrap(Byte[])

將位元組陣列包裝至緩衝區。

Wrap(Byte[], Int32, Int32)

將位元組陣列包裝至緩衝區。

明確介面實作

IComparable.CompareTo(Object)

位元組緩衝區。

IJavaPeerable.Disposed()

位元組緩衝區。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

位元組緩衝區。

(繼承來源 Object)
IJavaPeerable.Finalized()

位元組緩衝區。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

位元組緩衝區。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

位元組緩衝區。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

位元組緩衝區。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

位元組緩衝區。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

位元組緩衝區。

GetJniTypeName(IJavaPeerable)

位元組緩衝區。

適用於