JavaTM 2 Platform
Standard Ed. 6

java.nio.channels
介面 GatheringByteChannel

所有父級介面:
Channel, Closeable, WritableByteChannel
所有已知實作類別:
DatagramChannel, FileChannel, Pipe.SinkChannel, SocketChannel

public interface GatheringByteChannel
extends WritableByteChannel

可從緩衝區序列寫入位元組的通道。

集中 寫入操作可在單個調用中寫入來自一個或多個給定緩衝區序列的位元組序列。集中寫入通常在實作網路協議或檔案格式時很有用,例如將資料分組放入段中(這些段由一個或多個長度固定的頭,後跟長度可變的正文組成)。在 ScatteringByteChannel 介面中定義了類似的分散 讀取操作。

從以下版本開始:
1.4

方法摘要
 long write(ByteBuffer[] srcs)
          將位元組序列從給定的緩衝區寫入此通道。
 long write(ByteBuffer[] srcs, int offset, int length)
          將位元組序列從給定緩衝區的子序列寫入此通道。
 
從介面 java.nio.channels.WritableByteChannel 繼承的方法
write
 
從介面 java.nio.channels.Channel 繼承的方法
close, isOpen
 

方法詳細資訊

write

long write(ByteBuffer[] srcs,
           int offset,
           int length)
           throws IOException
將位元組序列從給定緩衝區的子序列寫入此通道。

嘗試最多向此通道中寫入 r 個位元組,其中 r 是給定緩衝區陣列的指定子序列中剩餘的位元組數,也就是

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

假定寫入長度為 n 的位元組序列,其中 0 <= n <= r。從緩衝區 srcs[offset] 中寫入此序列的前 srcs[offset].remaining() 個位元組,然後從緩衝區 srcs[offset+1] 中寫入後面的 srcs[offset+1].remaining() 個位元組,依此類別推,直到寫入整個位元組序列。從每個緩衝區中寫入盡可能多的位元組,因為要保證每個已更新緩衝區(最後一個已更新緩衝區除外)的最終位置等於該緩衝區的限制。

除非另行指定,否則僅在寫入所有請求的 r 個位元組後 write 操作才會返回。有些型別的通道(取決於它們的狀態)可能僅寫入某些位元組或者可能根本不寫入。例如,處於非阻塞網要的Socket通道無法寫入超出該Socket輸出緩衝區剩餘空間的位元組。

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

參數:
src - 要獲取其中位元組的緩衝區
offset - 第一個緩衝區(要獲取該緩衝區中的位元組)在緩衝區陣列中的偏移量;必須為非負數並且不能大於 srcs.length
length - 要存取的最大緩衝區數;必須為非負數並且不能大於 srcs.length - offset
返回:
寫入的位元組數,可能為零
拋出:
IndexOutOfBoundsException - 如果關於 offsetlength 參數的前提不成立
NonWritableChannelException - 如果不允許對此通道進行寫入操作
ClosedChannelException - 如果此通道已關閉
AsynchronousCloseException - 如果正在進行寫入操作時另一個執行緒關閉了此通道
ClosedByInterruptException - 如果正在進行寫入操作時另一個執行緒中斷了當前執行緒,因此關閉了該通道並將當前執行緒的狀態設置為中斷
IOException - 如果發生其他 I/O 錯誤

write

long write(ByteBuffer[] srcs)
           throws IOException
將位元組序列從給定的緩衝區寫入此通道。

調用此方法的形式為 c.write(srcs) ,該調用與以下調用完全相同:

 c.write(srcs, 0, srcs.length);

參數:
src - 要獲取其中位元組的緩衝區
返回:
寫入的位元組數,可能為零
拋出:
NonWritableChannelException - 如果不允許對此通道進行寫入操作
ClosedChannelException - 如果此通道已關閉
AsynchronousCloseException - 如果正在進行寫入操作時另一個執行緒關閉了此通道
ClosedByInterruptException - 如果正在進行寫入操作時另一個執行緒中斷了當前執行緒,因此關閉了該通道並將當前執行緒的狀態設置為中斷
IOException - 如果發生其他 I/O 錯誤

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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