語言

Pipe.SourceChannel.Read 方法

定義

多載

名稱 Description
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& nbsp;<= n <= R。 此位元組序列會被傳送到緩衝區,使序列中的第一個位元組位於索引 p ,最後一個位元組位於 p + n - 1,其中 p 是該方法被呼叫時緩衝區的位置。 返回時緩衝區的位置將等於 p + n;其極限不會改變。

讀取操作可能無法填滿緩衝區,事實上甚至可能根本不讀取任何位元組。 是否會這麼做取決於頻道的性質與狀態。 例如,非阻塞模式下的套接字通道無法讀取超過該套接字輸入緩衝區立即可用的位元組;同樣地,檔案通道不能讀取超過檔案中剩餘的位元組。 不過可以保證,如果通道處於阻塞模式且緩衝區中至少剩餘一個位元組,此方法會阻塞直到至少讀取一個位元組為止。

此方法可隨時啟動。 然而,如果已有其他執行緒對該通道發起讀取操作,則呼叫此方法會阻塞,直到第一個操作完成。

Java 文件 java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

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) 呼叫行為與呼叫完全相同

<引用>

c.read(dsts, 0, dsts.length);

</區塊引用>

Java 文件 java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[])。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

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 是該緩衝區陣列指定子序列中剩餘的總位元組數,即,

<引用>

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

</區塊引用>

在此方法被啟動的瞬間。

假設讀取長度 為 n 的位元組序列,其中 0& nbsp;<= n <= R。 此序列的前幾個 dsts[offset].remaining() 位元組會被傳送到緩衝 dsts[offset]區,直到接下來 dsts[offset+1].remaining() 的位元組被轉移到緩衝 dsts[offset+1]區,依此類推,直到整個位元組序列被傳送到給定的緩衝區。 每個緩衝區會傳輸盡可能多的位元組,因此除了最後更新的緩衝區外,每個更新緩衝區的最終位置都保證等於該緩衝區的限制。

此方法可隨時啟動。 然而,如果已有其他執行緒對該通道發起讀取操作,則呼叫此方法會阻塞,直到第一個操作完成。

Java 文件 java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[], int, int)。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於