Class PositionalBufferedStream

java.lang.Object
java.io.InputStream
htsjdk.tribble.readers.PositionalBufferedStream
All Implemented Interfaces:
LocationAware, Positional, Closeable, AutoCloseable

public final class PositionalBufferedStream extends InputStream implements Positional
A wrapper around an InputStream which performs it's own buffering, and keeps track of the position. TODO: This class implements Positional, which in turn extends LocationAware, which requires preservation of virtual file pointers on BGZF inputs. However, if the inputStream wrapped by this class is a BlockCompressedInputStream, it violates that contract by wrapping the stream and returning positional file offsets instead.
  • Constructor Details

    • PositionalBufferedStream

      public PositionalBufferedStream(InputStream is)
    • PositionalBufferedStream

      public PositionalBufferedStream(InputStream is, int bufferSize)
  • Method Details

    • getPosition

      public final long getPosition()
      Description copied from interface: LocationAware
      The current offset, in bytes, of this stream/writer/file. Or, if this is an iterator/producer, the offset (in bytes) of the END of the most recently returned record (since a produced record corresponds to something that has been read already). See class javadoc for more. Note that for BGZF files, this does not represent an actually file position, but a virtual file pointer.
      Specified by:
      getPosition in interface LocationAware
    • read

      public final int read() throws IOException
      Specified by:
      read in class InputStream
      Throws:
      IOException
    • read

      public final int read(byte[] bytes, int start, int len) throws IOException
      Overrides:
      read in class InputStream
      Throws:
      IOException
    • read

      public final int read(byte[] bytes) throws IOException
      Overrides:
      read in class InputStream
      Throws:
      IOException
    • isDone

      public final boolean isDone() throws IOException
      Description copied from interface: Positional
      Is the stream done? Equivalent to ! hasNext() for an iterator?
      Specified by:
      isDone in interface Positional
      Returns:
      true if the stream has reached EOF, false otherwise
      Throws:
      IOException
    • peek

      public final int peek() throws IOException
      Description copied from interface: Positional
      Return the next byte in the first, without actually reading it from the stream. Has the same output as read()
      Specified by:
      peek in interface Positional
      Returns:
      the next byte, or -1 if EOF encountered
      Throws:
      IOException
    • skip

      public final long skip(long nBytes) throws IOException
      Description copied from interface: Positional
      Skip the next nBytes in the stream.
      Specified by:
      skip in interface Positional
      Overrides:
      skip in class InputStream
      Parameters:
      nBytes - to skip, must be >= 0
      Returns:
      the number of bytes actually skippped.
      Throws:
      IOException
    • close

      public final void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class InputStream
    • main

      public static void main(String[] args) throws Exception
      Throws:
      Exception