Module 

Interface StreamSourceChannel

All Superinterfaces:
AutoCloseable, Channel, Closeable, CloseableChannel, Configurable, InterruptibleChannel, ReadableByteChannel, ScatteringByteChannel, SuspendableReadChannel
All Known Subinterfaces:
ConnectedSslStreamChannel, ConnectedStreamChannel, StreamChannel
All Known Implementing Classes:
AssembledConnectedSslStreamChannel, AssembledConnectedStreamChannel, AssembledStreamChannel, ConduitStreamSourceChannel, EmptyStreamSourceChannel, FixedLengthStreamSourceChannel, PushBackStreamChannel, SplitStreamSourceChannel

public interface StreamSourceChannel extends ReadableByteChannel, ScatteringByteChannel, SuspendableReadChannel
A stream source channel. This type of channel is a readable source for bytes. While all channel types are thread-safe, reading a stream from more than one thread concurrently will cause data corruption and may be disallowed at the option of the implementation.
  • Method Details

    • transferTo

      long transferTo(long position, long count, FileChannel target) throws IOException
      Transfers bytes into the given file from this channel. Using this method in preference to FileChannel.transferFrom(ReadableByteChannel, long, long) may provide a performance advantage on some platforms.

      If the current thread is interrupted when this method is called, it may throw a InterruptedIOException; however, if this exception is thrown, the InterruptedIOException.bytesTransferred field is guaranteed to be 0.

      Parameters:
      position - the position within the file from which the transfer is to begin
      count - the number of bytes to be transferred
      target - the file to write to
      Returns:
      the number of bytes (possibly 0) that were actually transferred
      Throws:
      IOException - if an I/O error occurs
    • transferTo

      long transferTo(long count, ByteBuffer throughBuffer, StreamSinkChannel target) throws IOException
      Transfers bytes into the given channel target. On some platforms, this may avoid copying bytes between user and kernel space. On other platforms, bytes are passed through the throughBuffer parameter's buffer space. On entry, throughBuffer will be cleared. On exit, the buffer will be flipped for emptying, and may possibly be empty or may contain data. If this method returns a value less than count, then the remaining data in throughBuffer may contain data read from this channel which must be written to target to complete the operation. Note that using a direct buffer may provide an intermediate performance gain on platforms without zero-copy facilities.

      If the current thread is interrupted when this method is called, it may throw a InterruptedIOException; however, if this exception is thrown, the InterruptedIOException.bytesTransferred field is guaranteed to be 0. Note that the return value is the amount of data that was actually transferred to the StreamSinkChannel. The actual amount of data read could be larger than this, and can be calculated by adding the return value and the amount of data left in throughBuffer.

      Parameters:
      count - the number of bytes to be transferred
      throughBuffer - the buffer to copy through.
      target - the destination to write to
      Returns:
      the number of bytes (possibly 0) that were actually transferred, or -1 if the end of input was reached
      Throws:
      IOException - if an I/O error occurs
    • getReadSetter

      ChannelListener.Setter<? extends StreamSourceChannel> getReadSetter()
      Get the setter which can be used to change the read listener for this channel.
      Specified by:
      getReadSetter in interface SuspendableReadChannel
      Returns:
      the setter
    • getCloseSetter

      ChannelListener.Setter<? extends StreamSourceChannel> getCloseSetter()
      Get the setter which can be used to change the close listener for this channel. If the channel is already closed, then the listener will not be called.
      Specified by:
      getCloseSetter in interface CloseableChannel
      Specified by:
      getCloseSetter in interface SuspendableReadChannel
      Returns:
      the setter