java.nio.channels
Interface ScatteringByteChannel

All Superinterfaces:
Channel sample code for java.nio.channels.Channel definition code for java.nio.channels.Channel , Closeable sample code for java.io.Closeable definition code for java.io.Closeable , ReadableByteChannel sample code for java.nio.channels.ReadableByteChannel definition code for java.nio.channels.ReadableByteChannel
All Known Implementing Classes:
DatagramChannel sample code for java.nio.channels.DatagramChannel definition code for java.nio.channels.DatagramChannel , FileChannel sample code for java.nio.channels.FileChannel definition code for java.nio.channels.FileChannel , Pipe.SourceChannel sample code for java.nio.channels.Pipe.SourceChannel definition code for java.nio.channels.Pipe.SourceChannel , SocketChannel sample code for java.nio.channels.SocketChannel definition code for java.nio.channels.SocketChannel

public interface ScatteringByteChannel
extends ReadableByteChannel sample code for java.nio.channels.ReadableByteChannel definition code for java.nio.channels.ReadableByteChannel

A channel that can read bytes into a sequence of buffers.

A scattering read operation reads, in a single invocation, a sequence of bytes into one or more of a given sequence of buffers. Scattering reads are often useful when implementing network protocols or file formats that, for example, group data into segments consisting of one or more fixed-length headers followed by a variable-length body. Similar gathering write operations are defined in the GatheringByteChannel sample code for java.nio.channels.GatheringByteChannel definition code for java.nio.channels.GatheringByteChannel interface.

Since:
1.4

Method Summary
 long read sample code for java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[]) definition code for java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[]) (ByteBuffer sample code for java.nio.ByteBuffer definition code for java.nio.ByteBuffer [] dsts)
          Reads a sequence of bytes from this channel into the given buffers.
 long read sample code for java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[], int, int) definition code for java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[], int, int) (ByteBuffer sample code for java.nio.ByteBuffer definition code for java.nio.ByteBuffer [] dsts, int offset, int length)
          Reads a sequence of bytes from this channel into a subsequence of the given buffers.
 
Methods inherited from interface java.nio.channels.ReadableByteChannel sample code for java.nio.channels.ReadableByteChannel definition code for java.nio.channels.ReadableByteChannel
read sample code for java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer) definition code for java.nio.channels.ReadableByteChannel.read(java.nio.ByteBuffer)
 
Methods inherited from interface java.nio.channels.Channel sample code for java.nio.channels.Channel definition code for java.nio.channels.Channel
close sample code for java.nio.channels.Channel.close() definition code for java.nio.channels.Channel.close() , isOpen sample code for java.nio.channels.Channel.isOpen() definition code for java.nio.channels.Channel.isOpen()
 

Method Detail

read sample code for java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[], int, int) definition code for java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[], int, int)

long read(ByteBuffer sample code for java.nio.ByteBuffer definition code for java.nio.ByteBuffer [] dsts,
          int offset,
          int length)
          throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Reads a sequence of bytes from this channel into a subsequence of the given buffers.

An invocation of this method attempts to read up to r bytes from this channel, where r is the total number of bytes remaining the specified subsequence of the given buffer array, that is,

 dsts[offset].remaining()
     + dsts[offset+1].remaining()
     + ... + dsts[offset+length-1].remaining()
at the moment that this method is invoked.

Suppose that a byte sequence of length n is read, where 0 <= n <= r. Up to the first dsts[offset].remaining() bytes of this sequence are transferred into buffer dsts[offset], up to the next dsts[offset+1].remaining() bytes are transferred into buffer dsts[offset+1], and so forth, until the entire byte sequence is transferred into the given buffers. As many bytes as possible are transferred into each buffer, hence the final position of each updated buffer, except the last updated buffer, is guaranteed to be equal to that buffer's limit.

This method may be invoked at any time. If another thread has already initiated a read operation upon this channel, however, then an invocation of this method will block until the first operation is complete.

Parameters:
dsts - The buffers into which bytes are to be transferred
offset - The offset within the buffer array of the first buffer into which bytes are to be transferred; must be non-negative and no larger than dsts.length
length - The maximum number of buffers to be accessed; must be non-negative and no larger than dsts.length - offset
Returns:
The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream
Throws:
IndexOutOfBoundsException sample code for java.lang.IndexOutOfBoundsException definition code for java.lang.IndexOutOfBoundsException - If the preconditions on the offset and length parameters do not hold
NonReadableChannelException sample code for java.nio.channels.NonReadableChannelException definition code for java.nio.channels.NonReadableChannelException - If this channel was not opened for reading
ClosedChannelException sample code for java.nio.channels.ClosedChannelException definition code for java.nio.channels.ClosedChannelException - If this channel is closed
AsynchronousCloseException sample code for java.nio.channels.AsynchronousCloseException definition code for java.nio.channels.AsynchronousCloseException - If another thread closes this channel while the read operation is in progress
ClosedByInterruptException sample code for java.nio.channels.ClosedByInterruptException definition code for java.nio.channels.ClosedByInterruptException - If another thread interrupts the current thread while the read operation is in progress, thereby closing the channel and setting the current thread's interrupt status
IOException sample code for java.io.IOException definition code for java.io.IOException - If some other I/O error occurs

read sample code for java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[]) definition code for java.nio.channels.ScatteringByteChannel.read(java.nio.ByteBuffer[])

long read(ByteBuffer sample code for java.nio.ByteBuffer definition code for java.nio.ByteBuffer [] dsts)
          throws IOException sample code for java.io.IOException definition code for java.io.IOException 
Reads a sequence of bytes from this channel into the given buffers.

An invocation of this method of the form c.read(dsts) behaves in exactly the same manner as the invocation

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

Parameters:
dsts - The buffers into which bytes are to be transferred
Returns:
The number of bytes read, possibly zero, or -1 if the channel has reached end-of-stream
Throws:
NonReadableChannelException sample code for java.nio.channels.NonReadableChannelException definition code for java.nio.channels.NonReadableChannelException - If this channel was not opened for reading
ClosedChannelException sample code for java.nio.channels.ClosedChannelException definition code for java.nio.channels.ClosedChannelException - If this channel is closed
AsynchronousCloseException sample code for java.nio.channels.AsynchronousCloseException definition code for java.nio.channels.AsynchronousCloseException - If another thread closes this channel while the read operation is in progress
ClosedByInterruptException sample code for java.nio.channels.ClosedByInterruptException definition code for java.nio.channels.ClosedByInterruptException - If another thread interrupts the current thread while the read operation is in progress, thereby closing the channel and setting the current thread's interrupt status
IOException sample code for java.io.IOException definition code for java.io.IOException - If some other I/O error occurs