org.tukaani.xz
Class SeekableInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by org.tukaani.xz.SeekableInputStream
All Implemented Interfaces:
java.io.Closeable
Direct Known Subclasses:
SeekableFileInputStream, SeekableXZInputStream

public abstract class SeekableInputStream
extends java.io.InputStream

Input stream with random access support.


Constructor Summary
SeekableInputStream()
           
 
Method Summary
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