org.apache.cassandra.io.util

## Class FastByteArrayInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.apache.cassandra.io.util.FastByteArrayInputStream

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

      public class FastByteArrayInputStream
      extends java.io.InputStream

  A specialized `InputStream` for reading the contents of a byte array.
  See Also:
    `ByteArrayInputStream`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected byte[]` | `buf` The `byte` array containing the bytes to stream over.
    `protected int` | `count` The total number of bytes initially available in the byte array `buf`.
    `protected int` | `mark` The current mark position.
    `protected int` | `pos` The current position within the byte array.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FastByteArrayInputStream(byte[] buf)` Constructs a new `ByteArrayInputStream` on the byte array `buf`.
    `FastByteArrayInputStream(byte[] buf, int offset, int length)` Constructs a new `ByteArrayInputStream` on the byte array `buf` with the initial position set to `offset` and the number of bytes available set to `offset` + `length`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `available()` Returns the number of bytes that are available before this stream will block.
    `void` | `close()` Closes this stream and frees resources associated with this stream.
    `void` | `mark(int readlimit)` Sets a mark position in this ByteArrayInputStream.
    `boolean` | `markSupported()` Indicates whether this stream supports the `mark()` and `reset()` methods.
    `int` | `read()` Reads a single byte from the source byte array and returns it as an integer in the range from 0 to 255.
    `int` | `read(byte[] b, int offset, int length)` Reads at most `len` bytes from this stream and stores them in byte array `b` starting at `offset`.
    `void` | `reset()` Resets this stream to the last marked location.
    `long` | `skip(long n)` Skips `count` number of bytes in this InputStream.

    - ### Methods inherited from class java.io.InputStream

      `read`

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

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

- - ### Field Detail

    - #### buf

          protected byte[] buf

      The `byte` array containing the bytes to stream over.

    - #### pos

          protected int pos

      The current position within the byte array.

    - #### mark

          protected int mark

      The current mark position. Initially set to 0 or the `offset` parameter within the constructor.

    - #### count

          protected int count

      The total number of bytes initially available in the byte array `buf`.

  - ### Constructor Detail

    - #### FastByteArrayInputStream

          public FastByteArrayInputStream(byte[] buf)

      Constructs a new `ByteArrayInputStream` on the byte array `buf`.
      Parameters:
        `buf` - the byte array to stream over.

    - #### FastByteArrayInputStream

          public FastByteArrayInputStream(byte[] buf,
                                          int offset,
                                          int length)

      Constructs a new `ByteArrayInputStream` on the byte array `buf` with the initial position set to `offset` and the number of bytes available set to `offset` + `length`.
      Parameters:
        `buf` - the byte array to stream over.
        `offset` - the initial position in `buf` to start streaming from.
        `length` - the number of bytes available for streaming.

  - ### Method Detail

    - #### available

          public int available()

      Returns the number of bytes that are available before this stream will block. This method returns the number of bytes yet to be read from the source byte array.
      Overrides:
        `available` in class `java.io.InputStream`
      Returns:
        the number of bytes available before blocking.

    - #### close

          public void close()
                     throws java.io.IOException

      Closes this stream and frees resources associated with this stream.
      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Overrides:
        `close` in class `java.io.InputStream`
      Throws:
        `java.io.IOException` - if an I/O error occurs while closing this stream.

    - #### mark

          public void mark(int readlimit)

      Sets a mark position in this ByteArrayInputStream. The parameter `readlimit` is ignored. Sending `reset()` will reposition the stream back to the marked position.
      Overrides:
        `mark` in class `java.io.InputStream`
      Parameters:
        `readlimit` - ignored.
      See Also:
        `markSupported()`, `reset()`

    - #### markSupported

          public boolean markSupported()

      Indicates whether this stream supports the `mark()` and `reset()` methods. Returns `true` since this class supports these methods.
      Overrides:
        `markSupported` in class `java.io.InputStream`
      Returns:
        always `true`.
      See Also:
        `mark(int)`, `reset()`

    - #### read

          public int read()

      Reads a single byte from the source byte array and returns it as an integer in the range from 0 to 255. Returns -1 if the end of the source array has been reached.
      Specified by:
        `read` in class `java.io.InputStream`
      Returns:
        the byte read or -1 if the end of this stream has been reached.

    - #### read

          public int read(byte[] b,
                          int offset,
                          int length)

      Reads at most `len` bytes from this stream and stores them in byte array `b` starting at `offset`. This implementation reads bytes from the source byte array.
      Overrides:
        `read` in class `java.io.InputStream`
      Parameters:
        `b` - the byte array in which to store the bytes read.
        `offset` - the initial position in `b` to store the bytes read from this stream.
        `length` - the maximum number of bytes to store in `b`.
      Returns:
        the number of bytes actually read or -1 if no bytes were read and the end of the stream was encountered.
      Throws:
        `java.lang.IndexOutOfBoundsException` - if `offset < 0` or `length < 0`, or if `offset + length` is greater than the size of `b`.
        `java.lang.NullPointerException` - if `b` is `null`.

    - #### reset

          public void reset()

      Resets this stream to the last marked location. This implementation resets the position to either the marked position, the start position supplied in the constructor or 0 if neither has been provided.
      Overrides:
        `reset` in class `java.io.InputStream`
      See Also:
        `mark(int)`

    - #### skip

          public long skip(long n)

      Skips `count` number of bytes in this InputStream. Subsequent `read()`s will not return these bytes unless `reset()` is used. This implementation skips `count` number of bytes in the target stream. It does nothing and returns 0 if `n` is negative.
      Overrides:
        `skip` in class `java.io.InputStream`
      Parameters:
        `n` - the number of bytes to skip.
      Returns:
        the number of bytes actually skipped.

Copyright © 2018 The Apache Software Foundation