Class 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 Detail

      • PositionalBufferedStream

        public PositionalBufferedStream​(InputStream is)
      • PositionalBufferedStream

        public PositionalBufferedStream​(InputStream is,
                                        int bufferSize)
    • Method Detail

      • 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
      • 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