Class 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.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method 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, nullInputStream, read, read, read, readAllBytes, readNBytes, readNBytes, reset, transferTo
      • 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