IAsynchronousByteChannel.Read 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| Read(ByteBuffer) |
從此通道讀取一串位元組到給定的緩衝區。 |
| Read(ByteBuffer, Object, ICompletionHandler) |
從此通道讀取一串位元組到給定的緩衝區。 |
Read(ByteBuffer)
從此通道讀取一串位元組到給定的緩衝區。
[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)Ljava/util/concurrent/Future;", "GetRead_Ljava_nio_ByteBuffer_Handler:Java.Nio.Channels.IAsynchronousByteChannelInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", ApiSince=26)]
public 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:Java.Nio.Channels.IAsynchronousByteChannelInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", ApiSince=26)>]
abstract member Read : Java.Nio.ByteBuffer -> Java.Util.Concurrent.IFuture
參數
- dst
- ByteBuffer
位元組要傳送到的緩衝區
傳回
一個代表這次行動結果的未來
- 屬性
備註
從此通道讀取一串位元組到給定的緩衝區。
此方法會啟動非同步讀取操作,將該通道的一串位元組讀取到指定緩衝區。 此方法的行為與該 #read(ByteBuffer,Object,CompletionHandler) read(ByteBuffer,Object,CompletionHandler) 方法完全相同,不同的是,該方法回傳的是代表待處理結果的 a Future ,而非指定完成處理程序。
Futures Future#get() get 方法回傳已讀取的位元組數,或-1若通道已達串流終止,無法讀取位元組。
Java 文件 java.nio.channels.AsynchronousByteChannel.read(java.nio.ByteBuffer)。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
Read(ByteBuffer, Object, ICompletionHandler)
從此通道讀取一串位元組到給定的緩衝區。
[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;Ljava/lang/Object;Ljava/nio/channels/CompletionHandler;)V", "GetRead_Ljava_nio_ByteBuffer_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler:Java.Nio.Channels.IAsynchronousByteChannelInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", 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", "GetRead_Ljava_nio_ByteBuffer_Ljava_lang_Object_Ljava_nio_channels_CompletionHandler_Handler:Java.Nio.Channels.IAsynchronousByteChannelInvoker, Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", ApiSince=26)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "A" })>]
abstract member Read : Java.Nio.ByteBuffer * Java.Lang.Object * Java.Nio.Channels.ICompletionHandler -> unit
參數
- dst
- ByteBuffer
位元組要傳送到的緩衝區
- attachment
- Object
要附加到 I/O 操作上的物件;可以是 null
- handler
- ICompletionHandler
完成處理程序
- 屬性
備註
從此通道讀取一串位元組到給定的緩衝區。
此方法會啟動非同步讀取操作,將該通道的一串位元組讀取到指定緩衝區。 參數 handler 是一個完成處理程序,當讀取操作完成(或失敗)時會被呼叫。 傳遞給完備處理器的結果是讀取的位元組數,或 -1 若通道已達串流結束,無法讀取位元組。
讀取操作可從通道讀取最多 r 位元組,其中 r 是緩衝區中剩餘的位元組數,即 dst.remaining() 嘗試讀取時的位元組數。 當 r 為 0 時,讀取操作立即完成,結果為 , 0 且未啟動 I/O 操作。
假設讀取長度 為 n 的位元組序列,其中 0& nbsp;< n <= R。 此位元組序列會被傳送到緩衝區,使序列中的第一個位元組位於索引 p ,最後一個位元組位於 p + n - 1,其中 p 是讀取執行時緩衝區的位置。 完成後緩衝區的位置將等於 p + n;其極限不會改變。
緩衝區不適合多個並行執行緒使用,因此應注意在操作完成前不要存取緩衝區。
此方法可隨時啟動。 某些通道類型可能不允許同時有超過一個讀取。 如果執行緒在前一次讀取操作尚未完成前就啟動讀取操作,則會拋出 a ReadPendingException 。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。