SeekableInMemoryByteChannel
Date: 2017-02-08

org.apache.commons.compress.utils

## Class SeekableInMemoryByteChannel

- java.lang.Object
- - org.apache.commons.compress.utils.SeekableInMemoryByteChannel

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, java.nio.channels.ByteChannel, java.nio.channels.Channel, java.nio.channels.ReadableByteChannel, java.nio.channels.SeekableByteChannel, java.nio.channels.WritableByteChannel

      public class SeekableInMemoryByteChannel
      extends java.lang.Object
      implements java.nio.channels.SeekableByteChannel

  A `SeekableByteChannel` implementation that wraps a byte[].

  When this channel is used for writing an internal buffer grows to accommodate incoming data. A natural size limit is the value of `Integer.MAX_VALUE`. Internal buffer can be accessed via `array()`.

  Since:
    1.13

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SeekableInMemoryByteChannel()` Parameterless constructor - allocates internal buffer by itself.
    `SeekableInMemoryByteChannel(byte[] data)` Constructor taking a byte array.
    `SeekableInMemoryByteChannel(int size)` Constructor taking a size of storage to be allocated.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `array()` Obtains the array backing this channel.
    `void` | `close()`
    `boolean` | `isOpen()`
    `long` | `position()`
    `java.nio.channels.SeekableByteChannel` | `position(long newPosition)`
    `int` | `read(java.nio.ByteBuffer buf)`
    `long` | `size()`
    `java.nio.channels.SeekableByteChannel` | `truncate(long newSize)`
    `int` | `write(java.nio.ByteBuffer b)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SeekableInMemoryByteChannel

          public SeekableInMemoryByteChannel(byte[] data)

      Constructor taking a byte array.

      This constructor is intended to be used with pre-allocated buffer or when reading from a given byte array.

      Parameters:
        `data` - input data or pre-allocated array.

    - #### SeekableInMemoryByteChannel

          public SeekableInMemoryByteChannel()

      Parameterless constructor - allocates internal buffer by itself.

    - #### SeekableInMemoryByteChannel

          public SeekableInMemoryByteChannel(int size)

      Constructor taking a size of storage to be allocated.

      Creates a channel and allocates internal storage of a given size.

      Parameters:
        `size` - size of internal buffer to allocate, in bytes.

  - ### Method Detail

    - #### position

          public long position()

      Specified by:
        `position` in interface `java.nio.channels.SeekableByteChannel`

    - #### position

          public java.nio.channels.SeekableByteChannel position(long newPosition)
                                                         throws java.io.IOException

      Specified by:
        `position` in interface `java.nio.channels.SeekableByteChannel`
      Throws:
        `java.io.IOException`

    - #### size

          public long size()

      Specified by:
        `size` in interface `java.nio.channels.SeekableByteChannel`

    - #### truncate

          public java.nio.channels.SeekableByteChannel truncate(long newSize)

      Specified by:
        `truncate` in interface `java.nio.channels.SeekableByteChannel`

    - #### read

          public int read(java.nio.ByteBuffer buf)
                   throws java.io.IOException

      Specified by:
        `read` in interface `java.nio.channels.ReadableByteChannel`
      Specified by:
        `read` in interface `java.nio.channels.SeekableByteChannel`
      Throws:
        `java.io.IOException`

    - #### close

          public void close()

      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Specified by:
        `close` in interface `java.nio.channels.Channel`

    - #### isOpen

          public boolean isOpen()

      Specified by:
        `isOpen` in interface `java.nio.channels.Channel`

    - #### write

          public int write(java.nio.ByteBuffer b)
                    throws java.io.IOException

      Specified by:
        `write` in interface `java.nio.channels.SeekableByteChannel`
      Specified by:
        `write` in interface `java.nio.channels.WritableByteChannel`
      Throws:
        `java.io.IOException`

    - #### array

          public byte[] array()

      Obtains the array backing this channel.

      NOTE: The returned buffer is not aligned with containing data, use `size()` to obtain the size of data stored in the buffer.

      Returns:
        internal byte array.