org.tukaani.xz

## Class SeekableInputStream

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

All Implemented Interfaces:
  Closeable, AutoCloseable

Direct Known Subclasses:
  SeekableFileInputStream, SeekableXZInputStream

    public abstract class SeekableInputStream
    extends InputStream

Input stream with random access support.

### Constructor Summary

Constructors
Constructor and Description
`SeekableInputStream()`

### Method Summary

Methods
`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 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 `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:
  `IOException` - might be thrown by `seek(long)`

#### length

    public abstract long length()
                         throws IOException

Gets the size of the stream.

Throws:
  `IOException`

#### position

    public abstract long position()
                           throws IOException

Gets the current position in the stream.

Throws:
  `IOException`

#### seek

    public abstract void seek(long pos)
                       throws 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:
  `IOException` - if `pos` is negative or if a stream-specific I/O error occurs