Package org.apache.commons.codec.binary

# Class BaseNCodecInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.apache.commons.codec.binary.BaseNCodecInputStream

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

Direct Known Subclasses:
  `Base16InputStream`, `Base32InputStream`, `Base64InputStream`

public class BaseNCodecInputStream extends FilterInputStream
Abstract superclass for Base-N input streams.

Since:
  1.5

- ## Field Summary

  ### Fields inherited from class java.io.FilterInputStream

  `in`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `BaseNCodecInputStream(InputStream inputStream, BaseNCodec baseNCodec, boolean doEncode)`
  Create an instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `available()`
  `boolean`
  `isStrictDecoding()`
  Returns true if decoding behavior is strict.
  `void`
  `mark(int readLimit)`
  Marks the current position in this input stream.
  `boolean`
  `markSupported()`
  `int`
  `read()`
  Reads one `byte` from this input stream.
  `int`
  `read(byte[] array, int offset, int len)`
  Attempts to read `len` bytes into the specified `b` array starting at `offset` from this InputStream.
  `void`
  `reset()`
  Repositions this stream to the position at the time the mark method was last called on this input stream.
  `long`
  `skip(long n)`

  ### Methods inherited from class java.io.FilterInputStream

  `close, read`

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

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

- ## Constructor Details

  - ### BaseNCodecInputStream

    protected BaseNCodecInputStream(InputStream inputStream, BaseNCodec baseNCodec, boolean doEncode)
    Create an instance.
    Parameters:
      `inputStream` - the input stream
      `baseNCodec` - the codec
      `doEncode` - set to true to perform encoding, else decoding

- ## Method Details

  - ### available

    public int available() throws IOException
    Overrides:
      `available` in class `FilterInputStream`
    Returns:
      `0` if the `InputStream` has reached `EOF`, `1` otherwise
    Throws:
      `IOException`
    Since:
      1.7

  - ### isStrictDecoding

    public boolean isStrictDecoding()
    Returns true if decoding behavior is strict. Decoding will raise an `IllegalArgumentException` if trailing bits are not part of a valid encoding.

    The default is false for lenient encoding. Decoding will compose trailing bits into 8-bit bytes and discard the remainder.

    Returns:
      true if using strict decoding
    Since:
      1.15

  - ### mark

    public void mark(int readLimit)
    Marks the current position in this input stream.

    The `mark(int)` method of `BaseNCodecInputStream` does nothing.

    Overrides:
      `mark` in class `FilterInputStream`
    Parameters:
      `readLimit` - the maximum limit of bytes that can be read before the mark position becomes invalid.
    Since:
      1.7
    See Also:
      - `markSupported()`

  - ### markSupported

    public boolean markSupported()
    Overrides:
      `markSupported` in class `FilterInputStream`
    Returns:
      Always returns `false`

  - ### read

    public int read() throws IOException
    Reads one `byte` from this input stream.
    Overrides:
      `read` in class `FilterInputStream`
    Returns:
      the byte as an integer in the range 0 to 255. Returns -1 if EOF has been reached.
    Throws:
      `IOException` - if an I/O error occurs.

  - ### read

    public int read(byte[] array, int offset, int len) throws IOException
    Attempts to read `len` bytes into the specified `b` array starting at `offset` from this InputStream.
    Overrides:
      `read` in class `FilterInputStream`
    Parameters:
      `array` - destination byte array
      `offset` - where to start writing the bytes
      `len` - maximum number of bytes to read
    Returns:
      number of bytes read
    Throws:
      `IOException` - if an I/O error occurs.
      `NullPointerException` - if the byte array parameter is null
      `IndexOutOfBoundsException` - if offset, len or buffer size are invalid

  - ### reset

    public void reset() throws IOException
    Repositions this stream to the position at the time the mark method was last called on this input stream.

    The `reset()` method of `BaseNCodecInputStream` does nothing except throw an `IOException`.

    Overrides:
      `reset` in class `FilterInputStream`
    Throws:
      `IOException` - if this method is invoked
    Since:
      1.7

  - ### skip

    public long skip(long n) throws IOException
    Overrides:
      `skip` in class `FilterInputStream`
    Throws:
      `IllegalArgumentException` - if the provided skip length is negative
      `IOException`
    Since:
      1.7