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 anInputStream
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
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
long
getPosition()
The current offset, in bytes, of this stream/writer/file.boolean
isDone()
Is the stream done? Equivalent to ! hasNext() for an iterator?static void
main(String[] args)
int
peek()
Return the next byte in the first, without actually reading it from the stream.int
read()
int
read(byte[] bytes)
int
read(byte[] bytes, int start, int len)
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, transferTo
-
-
-
-
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 interfaceLocationAware
-
read
public final int read() throws IOException
- Specified by:
read
in classInputStream
- Throws:
IOException
-
read
public final int read(byte[] bytes, int start, int len) throws IOException
- Overrides:
read
in classInputStream
- Throws:
IOException
-
read
public final int read(byte[] bytes) throws IOException
- Overrides:
read
in classInputStream
- 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 interfacePositional
- 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 interfacePositional
- 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 interfacePositional
- Overrides:
skip
in classInputStream
- 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 interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classInputStream
-
-