# Class SeekableBufferedStream

java.lang.Object
java.io.InputStream
htsjdk.samtools.seekablestream.SeekableStream
htsjdk.samtools.seekablestream.SeekableBufferedStream

All Implemented Interfaces:
  `Closeable, AutoCloseable`

public class SeekableBufferedStream extends SeekableStream
A wrapper class to provide buffered read access to a SeekableStream. Just wrapping such a stream with a BufferedInputStream will not work as it does not support seeking. In this implementation a seek call is delegated to the wrapped stream, and the buffer reset.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`DEFAULT_BUFFER_SIZE`

### Fields inherited from class SeekableStream

`mark`

## Constructor Summary

Constructors
Constructor
Description
`SeekableBufferedStream(SeekableStream stream)`
`SeekableBufferedStream(SeekableStream stream, int bufferSize)`

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
`boolean`
`eof()`
`String`
`getSource()`
`long`
`length()`
`long`
`position()`
`int`
`read()`
`int`
`read(byte[] buffer, int offset, int length)`
`void`
`seek(long position)`
Seeks the stream to the provided position.
`long`
`skip(long skipLength)`

### Methods inherited from class SeekableStream

`available, mark, markSupported, readFully, reset`

### Methods inherited from class InputStream

`nullInputStream, read, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo`

### Methods inherited from class Object

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

## Field Details

### DEFAULT_BUFFER_SIZE

public static final int DEFAULT_BUFFER_SIZE

See Also:
  - Constant Field Values

## Constructor Details

### SeekableBufferedStream

public SeekableBufferedStream(SeekableStream stream, int bufferSize)

### SeekableBufferedStream

public SeekableBufferedStream(SeekableStream stream)

## Method Details

### length

public long length()

Specified by:
  `length` in class `SeekableStream`
Returns:
  the length of the stream; 0 if not available or empty.

### skip

public long skip(long skipLength) throws IOException

Overrides:
  `skip` in class `InputStream`
Throws:
  `IOException`

### seek

public void seek(long position) throws IOException
Description copied from class: `SeekableStream`
Seeks the stream to the provided position.

Specified by:
  `seek` in class `SeekableStream`
Throws:
  `IOException`

### read

public int read() throws IOException

Specified by:
  `read` in class `InputStream`
Throws:
  `IOException`

### read

public int read(byte[] buffer, int offset, int length) throws IOException

Specified by:
  `read` in class `SeekableStream`
Throws:
  `IOException`

### close

public void close() throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in class `SeekableStream`
Throws:
  `IOException`

### eof

public boolean eof() throws IOException

Specified by:
  `eof` in class `SeekableStream`
Returns:
  `true` if the stream is already consumed; `false` otherwise.
Throws:
  `IOException`

### getSource

public String getSource()

Specified by:
  `getSource` in class `SeekableStream`
Returns:
  String representation of source (e.g. URL, file path, etc.), or null if not available.

### position

public long position() throws IOException

Specified by:
  `position` in class `SeekableStream`
Returns:
  the current byte position of the stream.
Throws:
  `IOException`