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 Details

    • SeekableInputStream

      public SeekableInputStream()
  • Method Details

    • 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