JavaTM 2 Platform
Standard Ed. 6

java.nio.channels
介面 ReadableByteChannel

所有父級介面:
Channel, Closeable
所有已知子介面:
ByteChannel, ScatteringByteChannel
所有已知實作類別:
DatagramChannel, FileChannel, Pipe.SourceChannel, SocketChannel

public interface ReadableByteChannel
extends Channel

可讀取位元組的通道。

在任意給定時刻,一個可讀取通道上只能進行一個讀取操作。如果某個執行緒在通道上發起讀取操作,那麼在第一個操作完成之前,將阻塞其他所有試圖發起另一個讀取操作的執行緒。其他種類別的 I/O 操作是否繼續與讀取操作共時執行取決於該通道的型別。

從以下版本開始:
1.4

方法摘要
 int read(ByteBuffer dst)
          將位元組序列從此通道中讀入給定的緩衝區。
 
從介面 java.nio.channels.Channel 繼承的方法
close, isOpen
 

方法詳細資訊

read

int read(ByteBuffer dst)
         throws IOException
將位元組序列從此通道中讀入給定的緩衝區。

嘗試最多從該通道中讀取 r 個位元組,其中 r 是調用此方法時緩衝區中剩餘的位元組數,即 dst.remaining()

假定讀取的位元組序列長度為 n,其中 0 <= n <= r。此位元組序列將被傳輸到緩衝區中,序列中的第一個位元組位於索引 p 處,最後一個位元組則位於索引 p + n - 1 處,其中 p 是調用此方法時緩衝區的位置。返回時,該緩衝區的位置將等於 p + n;其限制不會更改。

讀取操作可能不填充緩衝區,實際上它可能根本不讀取任何位元組。是否如此執行取決於通道的性質和狀態。例如,處於非阻塞網要的Socket通道只能從該Socket的輸入緩衝區中讀取立即可用的位元組;類似地,檔案通道只能讀取檔案中剩餘的位元組。但是可以保證,如果某個通道處於阻塞網要,並且緩衝區中至少剩餘一個位元組,則在讀取至少一個位元組之前將阻塞此方法。

可在任意時間調用此方法。但是如果另一個執行緒已經在此通道上發起了一個讀取操作,則在該操作完成前此方法的調用被阻塞。

參數:
dst - 要向其中傳輸位元組的緩衝區
返回:
讀取的位元組數,可能為零,如果該通道已到達串流的末尾,則返回 -1
拋出:
NonReadableChannelException - 如果不允許從此通道進行讀取操作
ClosedChannelException - 如果此通道已關閉
AsynchronousCloseException - 如果正在進行讀取操作時另一個執行緒關閉了此通道
ClosedByInterruptException - 如果正在進行讀取操作時另一個執行緒中斷了當前執行緒,因此關閉了該通道並將當前執行緒設置為中斷狀態
IOException - 如果發生其他 I/O 錯誤

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only