Package htsjdk.tribble.readers

# 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 Summary

Constructors
Constructor
Description
`PositionalBufferedStream(InputStream is)`
`PositionalBufferedStream(InputStream is, int bufferSize)`

## Method Summary

Modifier and Type
Method
Description
`final void`
`close()`
`final long`
`getPosition()`
The current offset, in bytes, of this stream/writer/file.
`final boolean`
`isDone()`
Is the stream done? Equivalent to ! hasNext() for an iterator?
`static void`
`main(String[] args)`
`final int`
`peek()`
Return the next byte in the first, without actually reading it from the stream.
`final int`
`read()`
`final int`
`read(byte[] bytes)`
`final int`
`read(byte[] bytes, int start, int len)`
`final long`
`skip(long nBytes)`
Skip the next nBytes in the stream.

### Methods inherited from class java.io.InputStream

`available, mark, markSupported, nullInputStream, readAllBytes, readNBytes, readNBytes, reset, skipNBytes, transferTo`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## 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`