Package htsjdk.samtools.seekablestream
Class SeekableStream
java.lang.Object
java.io.InputStream
htsjdk.samtools.seekablestream.SeekableStream
- All Implemented Interfaces:
Closeable,AutoCloseable
- Direct Known Subclasses:
ByteArraySeekableStream,SeekableBufferedStream,SeekableFileStream,SeekableFTPStream,SeekableHTTPStream,SeekableMemoryStream,SeekablePathStream
InputStream with random access support (seek).
SeekableStream provides an interface for random access support in InputStream,
thought the implementation of seek(long). As a random access stream, it supports mark
by design, being able to seek to a concrete position.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected OptionalLongIf the stream is marked withmark(int)this represents theposition()where the stream was; otherwise, this is empty. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintThe return value of this method is unusable for any purpose, and we are only implementing it because certain Java classes likeGZIPInputStreamincorrectly rely on it to detect EOFabstract voidclose()abstract booleaneof()abstract Stringabstract longlength()final voidmark(int readlimit) Mark the current position of the stream.final booleanMark is always supported by anySeekableStream.abstract longposition()abstract intread(byte[] buffer, int offset, int length) voidreadFully(byte[] b) Read enough bytes to fill the input buffer.voidreset()Seeks to the marked position if set; otherwise to the beginning of the stream.abstract voidseek(long position) Seeks the stream to the provided position.Methods inherited from class java.io.InputStream
nullInputStream, read, read, readAllBytes, readNBytes, readNBytes, skip, skipNBytes, transferTo
-
Field Details
-
mark
If the stream is marked withmark(int)this represents theposition()where the stream was; otherwise, this is empty.
-
-
Constructor Details
-
SeekableStream
public SeekableStream()
-
-
Method Details
-
length
public abstract long length()- Returns:
- the length of the stream; 0 if not available or empty.
-
position
- Returns:
- the current byte position of the stream.
- Throws:
IOException
-
seek
Seeks the stream to the provided position.- Throws:
IOException
-
read
- Overrides:
readin classInputStream- Throws:
IOException
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classInputStream- Throws:
IOException
-
eof
- Returns:
trueif the stream is already consumed;falseotherwise.- Throws:
IOException
-
getSource
- Returns:
- String representation of source (e.g. URL, file path, etc.), or null if not available.
-
readFully
Read enough bytes to fill the input buffer.- Parameters:
b-- Throws:
EOFException- If EOF is reached before buffer is filledIOException
-
available
The return value of this method is unusable for any purpose, and we are only implementing it because certain Java classes likeGZIPInputStreamincorrectly rely on it to detect EOFIf
eof() == true, 0 bytes are available. Otherwise, available bytes are the difference between the length of the stream (length()) and the current position (position().- Overrides:
availablein classInputStream- Returns:
0if the end of the file has been reached or the length cannot be determined; number of bytes remaining in the stream otherwise.- Throws:
IOException
-
mark
public final void mark(int readlimit) Mark the current position of the stream.Note: there is no limit for reading.
- Overrides:
markin classInputStream- Parameters:
readlimit- ignored.- Throws:
RuntimeIOException- if an IO error occurs other than an already closed stream.
-
reset
Seeks to the marked position if set; otherwise to the beginning of the stream.- Overrides:
resetin classInputStream- Throws:
IOException
-
markSupported
public final boolean markSupported()Mark is always supported by anySeekableStream.- Overrides:
markSupportedin classInputStream
-