Sdílet prostřednictvím


FileChannel.TransferFrom(IReadableByteChannel, Int64, Int64) Method

Definition

Transfers bytes into this channel's file from the given readable byte channel.

[Android.Runtime.Register("transferFrom", "(Ljava/nio/channels/ReadableByteChannel;JJ)J", "GetTransferFrom_Ljava_nio_channels_ReadableByteChannel_JJHandler")]
public abstract long TransferFrom (Java.Nio.Channels.IReadableByteChannel? src, long position, long count);
[<Android.Runtime.Register("transferFrom", "(Ljava/nio/channels/ReadableByteChannel;JJ)J", "GetTransferFrom_Ljava_nio_channels_ReadableByteChannel_JJHandler")>]
abstract member TransferFrom : Java.Nio.Channels.IReadableByteChannel * int64 * int64 -> int64

Parameters

src
IReadableByteChannel

The source channel

position
Int64

The position within the file at which the transfer is to begin; must be non-negative

count
Int64

The maximum number of bytes to be transferred; must be non-negative

Returns

The number of bytes, possibly zero, that were actually transferred

Attributes

Exceptions

if the parameters are invalid.

if the source channel is not readable.

if this channel is not writable.

if either channel has already been closed.

if either channel is closed by other threads during this operation.

if the thread is interrupted during this operation.

if any I/O error occurs.

Remarks

Transfers bytes into this channel's file from the given readable byte channel.

An attempt is made to read up to count bytes from the source channel and write them to this channel's file starting at the given position. An invocation of this method may or may not transfer all of the requested bytes; whether or not it does so depends upon the natures and states of the channels. Fewer than the requested number of bytes will be transferred if the source channel has fewer than count bytes remaining, or if the source channel is non-blocking and has fewer than count bytes immediately available in its input buffer.

This method does not modify this channel's position. If the given position is greater than the file's current size then no bytes are transferred. If the source channel has a position then bytes are read starting at that position and then the position is incremented by the number of bytes read.

This method is potentially much more efficient than a simple loop that reads from the source channel and writes to this channel. Many operating systems can transfer bytes directly from the source channel into the filesystem cache without actually copying them.

Java documentation for java.nio.channels.FileChannel.transferFrom(java.nio.channels.ReadableByteChannel, long, long).

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

Applies to