共用方式為


AsynchronousSocketChannel.Read 方法

定義

多載

Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)

從這個通道將位元組序列讀入指定緩衝區的子序列。

Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)

從這個通道將位元組序列讀取至指定的緩衝區。

Read(ByteBuffer)
Read(ByteBuffer, Object, ICompletionHandler)

Read(ByteBuffer[], Int32, Int32, Int64, TimeUnit, Object, ICompletionHandler)

從這個通道將位元組序列讀入指定緩衝區的子序列。

[Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_arrayLjava_nio_ByteBuffer_IIJLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Read (Java.Nio.ByteBuffer[]? dsts, int offset, int length, long timeout, Java.Util.Concurrent.TimeUnit? unit, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;IIJLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_arrayLjava_nio_ByteBuffer_IIJLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Read : Java.Nio.ByteBuffer[] * int * int * int64 * Java.Util.Concurrent.TimeUnit * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit

參數

dsts
ByteBuffer[]

要傳送位元組的緩衝區

offset
Int32

要傳送位元組的第一個緩衝區緩衝區陣列內的位移;必須是非負數且不大於 dsts.length

length
Int32

要存取的緩衝區數目上限;必須是非負數且不大於 dsts.length - offset

timeout
Int64

I/O 作業完成的時間上限

unit
TimeUnit

自變數的時間單位timeout

attachment
Object

要附加至 I/O 作業的物件;可以是 null

handler
ICompletionHandler

取用結果的處理程式

屬性

備註

從這個通道將位元組序列讀入指定緩衝區的子序列。 這項作業有時稱為 <em>散佈讀取</em>,在實作將數據分組為由一或多個固定長度標頭所組成的區段時,通常很有用,後面接著可變長度主體。 參數 handler 是讀取作業完成時叫用的完成處理程式(或失敗)。 傳遞至完成處理程式的結果是讀取的位元元組數目,或 -1 因為通道已到達數據流結尾而無法讀取任何位元組。

這個方法會起始從這個通道讀取最多 r 個字節,其中 r 是指定緩衝區陣列所指定子序列中剩餘的位元組總數,也就是

<blockquote>

dsts[offset].remaining()
                + dsts[offset+1].remaining()
                + ... + dsts[offset+length-1].remaining()

</blockquote>

嘗試讀取時。

假設讀取長度 n 的位元組序列,其中 0 < n <= r. 最多到這個序列的第一 dsts[offset].remaining() 個字節會傳輸至緩衝區 dsts[offset],直到下一個 dsts[offset+1].remaining() 位元組傳輸至緩衝區 dsts[offset+1],依此類推,直到整個位元組序列傳輸至指定的緩衝區為止。 將盡可能多的位元組傳送至每個緩衝區,因此,除了上次更新的緩衝區之外,每個更新緩衝區的最終位置保證等於該緩衝區的限制。 基礎操作系統可能會對I/O作業中使用的緩衝區數目施加限制。 其中緩衝區數目(剩餘位元組),超過此限制,則會以操作系統允許的緩衝區數目上限執行 I/O 作業。

如果已指定逾時,且作業完成之前逾時,就會完成,但例外狀況為 InterruptedByTimeoutException。 如果發生逾時,且實作無法保證尚未讀取位元組,或不會從通道讀取到指定的緩衝區,則進一步嘗試從通道讀取會導致擲回不特定的運行時間例外狀況。

java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer[], int, int, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Long, ? super A>)Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於

Read(ByteBuffer, Int64, TimeUnit, Object, ICompletionHandler)

從這個通道將位元組序列讀取至指定的緩衝區。

[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_Ljava_nio_ByteBuffer_JLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public abstract void Read (Java.Nio.ByteBuffer? dst, long timeout, Java.Util.Concurrent.TimeUnit? unit, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;JLjava/util/concurrent/TimeUnit;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_Ljava_nio_ByteBuffer_JLjava_util_concurrent_TimeUnit_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Read : Java.Nio.ByteBuffer * int64 * Java.Util.Concurrent.TimeUnit * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit

參數

dst
ByteBuffer

要傳送位元組的緩衝區

timeout
Int64

I/O 作業完成的時間上限

unit
TimeUnit

自變數的時間單位timeout

attachment
Object

要附加至 I/O 作業的物件;可以是 null

handler
ICompletionHandler

取用結果的處理程式

屬性

備註

從這個通道將位元組序列讀取至指定的緩衝區。

這個方法會起始異步讀取作業,以從這個通道讀取位元組序列到指定的緩衝區。 參數 handler 是讀取作業完成時叫用的完成處理程式(或失敗)。 傳遞至完成處理程式的結果是讀取的位元元組數目,或 -1 因為通道已到達數據流結尾而無法讀取任何位元組。

如果指定逾時,且作業完成前逾時,作業就會完成,但例外狀況為 InterruptedByTimeoutException。 如果發生逾時,且實作無法保證尚未讀取位元組,或不會從通道讀取到指定的緩衝區,則進一步嘗試從通道讀取會導致擲回非特定運行時間例外狀況。

否則,這個方法的運作方式與 AsynchronousByteChannel#read(ByteBuffer,Object,CompletionHandler) 方法相同。

java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, long, java.util.concurrent.TimeUnit, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>)Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於

Read(ByteBuffer)

[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;", "GetRead_Ljava_nio_ByteBuffer_Handler", ApiSince=26)]
public abstract Java.Util.Concurrent.IFuture? Read (Java.Nio.ByteBuffer? dst);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;", "GetRead_Ljava_nio_ByteBuffer_Handler", ApiSince=26)>]
abstract member Read : Java.Nio.ByteBuffer -> Java.Util.Concurrent.IFuture

參數

傳回

實作

屬性

備註

java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer)Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於

Read(ByteBuffer, Object, ICompletionHandler)

[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)]
[Java.Interop.JavaTypeParameters(new System.String[] { "A" })]
public void Read (Java.Nio.ByteBuffer? dst, Java.Lang.Object? attachment, Java.Nio.Channels.ICompletionHandler? handler);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Read : Java.Nio.ByteBuffer * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
override this.Read : Java.Nio.ByteBuffer * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit

參數

attachment
Object

實作

屬性

備註

java.nio.channels.AsynchronousSocketChannel.read(java.nio.ByteBuffer, A, java.nio.channels.CompletionHandler<java.lang.Integer, ? super A>)Java 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

適用於