SeekableInputStream
Date: 2017-02-08

org.tukaani.xz

## Class SeekableInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.tukaani.xz.SeekableInputStream

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
  Direct Known Subclasses:
    SeekableFileInputStream, SeekableXZInputStream

      public abstract class SeekableInputStream
      extends java.io.InputStream

  Input stream with random access support.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SeekableInputStream()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract long` | `length()` Gets the size of the stream.
    `abstract long` | `position()` Gets the current position in the stream.
    `abstract void` | `seek(long pos)` Seeks to the specified absolute position in the stream.
    `long` | `skip(long n)` Seeks `n` bytes forward in this stream.

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

      `available, close, mark, markSupported, read, read, read, reset`

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

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

- - ### Constructor Detail

    - #### SeekableInputStream

          public SeekableInputStream()

  - ### Method Detail

    - #### skip

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

      Seeks `n` bytes forward in this stream.

      This will not seek past the end of the file. If the current position is already at or past the end of the file, this doesn't seek at all and returns `0`. Otherwise, if skipping `n` bytes would cause the position to exceed the stream size, this will do equivalent of `seek(length())` and the return value will be adjusted accordingly.

      If `n` is negative, the position isn't changed and the return value is `0`. It doesn't seek backward because it would conflict with the specification of `InputStream.skip`.

      Overrides:
        `skip` in class `java.io.InputStream`
      Returns:
        `0` if `n` is negative, less than `n` if skipping `n` bytes would seek past the end of the file, `n` otherwise
      Throws:
        `java.io.IOException` - might be thrown by `seek(long)`

    - #### length

          public abstract long length()
                               throws java.io.IOException

      Gets the size of the stream.
      Throws:
        `java.io.IOException`

    - #### position

          public abstract long position()
                                 throws java.io.IOException

      Gets the current position in the stream.
      Throws:
        `java.io.IOException`

    - #### seek

          public abstract void seek(long pos)
                             throws java.io.IOException

      Seeks to the specified absolute position in the stream.

      Seeking past the end of the file should be supported by the subclasses unless there is a good reason to do otherwise. If one has seeked past the end of the stream, `read` will return `-1` to indicate end of stream.

      Parameters:
        `pos` - new read position in the stream
      Throws:
        `java.io.IOException` - if `pos` is negative or if a stream-specific I/O error occurs