Pipe.SourceChannel.Read 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
Read(ByteBuffer) |
将此通道中的字节序列读入给定缓冲区。 |
Read(ByteBuffer[]) |
将此通道中的字节序列读入给定缓冲区。 |
Read(ByteBuffer[], Int32, Int32) |
将此通道中的字节序列读入给定缓冲区的子序列。 |
Read(ByteBuffer)
将此通道中的字节序列读入给定缓冲区。
[Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)I", "GetRead_Ljava_nio_ByteBuffer_Handler")]
public abstract int Read (Java.Nio.ByteBuffer? dst);
[<Android.Runtime.Register("read", "(Ljava/nio/ByteBuffer;)I", "GetRead_Ljava_nio_ByteBuffer_Handler")>]
abstract member Read : Java.Nio.ByteBuffer -> int
参数
- dst
- ByteBuffer
要传输到的字节的缓冲区
返回
读取的字节数(可能为零)或 -1
通道是否已到达流端
实现
- 属性
注解
将此通道中的字节序列读入给定缓冲区。
尝试从通道读取最多 r 个字节,其中 r 是缓冲区中剩余的字节数,dst.remaining()
即,在调用此方法时。
假设读取长度 n 的字节序列,其中 0
<=
n <=
r. 此字节序列将传输到缓冲区中,以便序列中的第一个字节位于索引 p ,最后一个字节位于索引 p +
n -
1
,其中 p 是调用此方法时缓冲区的位置。 返回缓冲区的位置将等于 p +
n;其限制不会更改。
读取操作可能不会填充缓冲区,事实上,它可能根本不读取任何字节。 这是否取决于通道的性质和状态。 例如,非阻塞模式下的套接字通道无法读取比从套接字的输入缓冲区立即可用的字节数更多的字节;同样,文件通道读取的字节数不能超过保留在文件中的字节数。 但是,可以保证,如果通道处于阻塞模式,并且缓冲区中至少有一个字节剩余,则此方法将阻塞,直到读取至少一个字节。
可以随时调用此方法。 但是,如果另一个线程已在此通道上启动读取操作,则此方法的调用将阻止,直到第一个操作完成。
适用于 . 的 java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer)
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
适用于
Read(ByteBuffer[])
将此通道中的字节序列读入给定缓冲区。
[Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;)J", "GetRead_arrayLjava_nio_ByteBuffer_Handler")]
public abstract long Read (Java.Nio.ByteBuffer[]? dsts);
[<Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;)J", "GetRead_arrayLjava_nio_ByteBuffer_Handler")>]
abstract member Read : Java.Nio.ByteBuffer[] -> int64
参数
- dsts
- ByteBuffer[]
要传输到的字节的缓冲区
返回
读取的字节数(可能为零)或 -1
通道是否已到达流端
实现
- 属性
注解
将此通道中的字节序列读入给定缓冲区。
对窗体 c.read(dsts)
的此方法的调用的行为方式与调用方式完全相同
<blockquote>
c.read(dsts, 0, dsts.length);
</blockquote>
适用于 . 的 java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[])
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
适用于
Read(ByteBuffer[], Int32, Int32)
将此通道中的字节序列读入给定缓冲区的子序列。
[Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;II)J", "GetRead_arrayLjava_nio_ByteBuffer_IIHandler")]
public abstract long Read (Java.Nio.ByteBuffer[]? dsts, int offset, int length);
[<Android.Runtime.Register("read", "([Ljava/nio/ByteBuffer;II)J", "GetRead_arrayLjava_nio_ByteBuffer_IIHandler")>]
abstract member Read : Java.Nio.ByteBuffer[] * int * int -> int64
参数
- dsts
- ByteBuffer[]
要传输到的字节的缓冲区
- offset
- Int32
要传输到的第一个缓冲区的缓冲区数组中的偏移量;必须为非负值且不大于 dsts.length
- length
- Int32
要访问的最大缓冲区数;必须为非负值且不大于 dsts.length
- offset
返回
读取的字节数(可能为零)或 -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]
将整个字节序列传输到给定缓冲区,直到将整个字节序列传输到给定缓冲区为止。 将尽可能多的字节传输到每个缓冲区中,因此,每个更新缓冲区(上次更新的缓冲区除外)的最终位置保证等于该缓冲区的限制。
可以随时调用此方法。 但是,如果另一个线程已在此通道上启动读取操作,则此方法的调用将阻止,直到第一个操作完成。
适用于 . 的 java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[], int, int)
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。