SubInputStream
Date: 2016-04-28

org.apache.xmlgraphics.util.io

## Class SubInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.FilterInputStream
    - - org.apache.xmlgraphics.util.io.SubInputStream

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

      public class SubInputStream
      extends java.io.FilterInputStream

  This class is a FilterInputStream descendant that reads from an underlying InputStream up to a defined number of bytes or the end of the underlying stream. Closing this InputStream will not result in the underlying InputStream to be closed, too.

  This InputStream can be used to read chunks from a larger file of which the length is known in advance.

- - ### Field Summary

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

      `in`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SubInputStream(java.io.InputStream in, long maxLen)` Creates a new SubInputStream.
    `SubInputStream(java.io.InputStream in, long maxLen, boolean closeUnderlying)` Creates a new SubInputStream.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()`
    `int` | `read()`
    `int` | `read(byte[] b, int off, int len)`
    `long` | `skip(long n)`

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

      `available, mark, markSupported, read, reset`

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

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

- - ### Constructor Detail

    - #### SubInputStream

          public SubInputStream(java.io.InputStream in,
                        long maxLen,
                        boolean closeUnderlying)

      Creates a new SubInputStream.
      Parameters:
        `in` - the InputStream to read from
        `maxLen` - the maximum number of bytes to read from the underlying InputStream until the end-of-file is signalled.
        `closeUnderlying` - true if the underlying stream should be closed when the `close()` method is called.

    - #### SubInputStream

          public SubInputStream(java.io.InputStream in,
                        long maxLen)

      Creates a new SubInputStream. The underlying stream is not closed, when close() is called.
      Parameters:
        `in` - the InputStream to read from
        `maxLen` - the maximum number of bytes to read from the underlying InputStream until the end-of-file is signalled.

  - ### Method Detail

    - #### read

          public int read()
                   throws java.io.IOException

      Overrides:
        `read` in class `java.io.FilterInputStream`
      Throws:
        `java.io.IOException`

    - #### read

          public int read(byte[] b,
                 int off,
                 int len)
                   throws java.io.IOException

      Overrides:
        `read` in class `java.io.FilterInputStream`
      Throws:
        `java.io.IOException`

    - #### skip

          public long skip(long n)
                    throws java.io.IOException

      Overrides:
        `skip` in class `java.io.FilterInputStream`
      Throws:
        `java.io.IOException`

    - #### close

          public void close()
                     throws java.io.IOException

      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Overrides:
        `close` in class `java.io.FilterInputStream`
      Throws:
        `java.io.IOException`