IAsynchronousByteChannel.Read 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
| 名称 | 说明 |
|---|---|
| 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) 与方法的行为方式完全相同,不同之处在于该方法不指定完成处理程序,而是返回 Future 表示挂起的结果。
Future此方法Future#get() get返回读取的字节数,或者-1由于通道已达到流结束而无法读取字节数。
Java文档java.nio.channels.AsynchronousByteChannel.read(java.nio.ByteBuffer)。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
适用于
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 < n <= r. 此字节序列将传输到缓冲区中,以便序列中的第一个字节位于索引 p ,最后一个字节位于索引 p + n - 1,其中 p 是执行读取时缓冲区的位置。 完成后,缓冲区的位置将等于 p + n;其限制不会更改。
缓冲区不能安全地供多个并发线程使用,因此在操作完成之前,应注意不要访问缓冲区。
可以随时调用此方法。 某些通道类型可能不允许在任何给定时间完成多个读取。 如果线程在上一个读取操作完成之前启动读取操作,则会引发一个 ReadPendingException 读取操作。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。