語言

FileChannel.TransferTo(Int64, Int64, IWritableByteChannel) 方法

定義

將該通道檔案中的位元組傳輸到指定的可寫位元組通道。

[Android.Runtime.Register("transferTo", "(JJLjava/nio/channels/WritableByteChannel;)J", "GetTransferTo_JJLjava_nio_channels_WritableByteChannel_Handler")]
public abstract long TransferTo(long position, long count, Java.Nio.Channels.IWritableByteChannel? target);
[<Android.Runtime.Register("transferTo", "(JJLjava/nio/channels/WritableByteChannel;)J", "GetTransferTo_JJLjava_nio_channels_WritableByteChannel_Handler")>]
abstract member TransferTo : int64 * int64 * Java.Nio.Channels.IWritableByteChannel -> int64

參數

position
Int64

檔案中開始傳輸的位置;必須是非負數

count
Int64

最大傳輸位元組數;必須是非負數

target
IWritableByteChannel

目標頻道

傳回

實際傳輸的位元組數,可能是零

屬性

例外狀況

如果參數無效。

如果這個通道無法讀取。

如果目標通道不可寫。

如果任一頻道已經被關閉。

如果任一通道在此操作過程中被其他執行緒關閉。

如果執行緒在此操作中被中斷。

如果發生任何 I/O 錯誤。

備註

將該通道檔案中的位元組傳輸到指定的可寫位元組通道。

嘗試讀取 count 從給定 position 的位元組開始,並寫入目標通道。 此方法的呼叫可能會轉移所有請求的位元組,也可能不會;是否會做到,取決於頻道的性質與狀態。 若該通道檔案中從 count 給定 position開始的位元組少於位元組,或目標通道為非阻塞且輸出緩衝區空閒位元組少 count 於請求數量,則傳輸的位元組數少於請求數量。

此方法不會改變該通道的位置。 若該位置大小大於檔案目前大小,則不會傳送任何位元組。 如果目標通道有位置,則從該位置開始寫入位元組,然後該位置依照寫入位元組數遞增。

這種方法可能比單純從該通道讀取並寫入目標通道的迴圈更有效率。 許多作業系統可以直接從檔案系統快取傳輸位元組到目標通道,而不必實際複製它們。

Java 文件 java.nio.channels.FileChannel.transferTo(long, long, java.nio.channels.WritableByteChannel)。

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

適用於