Package org.postgresql.largeobject

# Class BlobInputStream

java.lang.Object
java.io.InputStream
org.postgresql.largeobject.BlobInputStream

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public class BlobInputStream extends InputStream
This is an implementation of an InputStream from a large object.

## Constructor Summary

Constructors
Constructor
Description
`BlobInputStream(LargeObject lo)`
`BlobInputStream(LargeObject lo, int bsize)`
`BlobInputStream(LargeObject lo, int bsize, long limit)`

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Closes this input stream and releases any system resources associated with the stream.
`void`
`mark(int readlimit)`
Marks the current position in this input stream.
`boolean`
`markSupported()`
Tests if this input stream supports the `mark` and `reset` methods.
`int`
`read()`
The minimum required to implement input stream.
`void`
`reset()`
Repositions this stream to the position at the time the `mark` method was last called on this input stream.

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

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

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

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

## Constructor Details

### BlobInputStream

public BlobInputStream(LargeObject lo)

Parameters:
  `lo` - LargeObject to read from

### BlobInputStream

public BlobInputStream(LargeObject lo, int bsize)

Parameters:
  `lo` - LargeObject to read from
  `bsize` - buffer size

### BlobInputStream

public BlobInputStream(LargeObject lo, int bsize, long limit)

Parameters:
  `lo` - LargeObject to read from
  `bsize` - buffer size
  `limit` - max number of bytes to read

## Method Details

### read

public int read() throws IOException
The minimum required to implement input stream.

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

### close

public void close() throws IOException

Closes this input stream and releases any system resources associated with the stream.

The `close` method of `InputStream` does nothing.

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Overrides:
  `close` in class `InputStream`
Throws:
  `IOException` - if an I/O error occurs.

### mark

public void mark(int readlimit)

Marks the current position in this input stream. A subsequent call to the `reset` method repositions this stream at the last marked position so that subsequent reads re-read the same bytes.

The `readlimit` arguments tells this input stream to allow that many bytes to be read before the mark position gets invalidated.

The general contract of `mark` is that, if the method `markSupported` returns `true`, the stream somehow remembers all the bytes read after the call to `mark` and stands ready to supply those same bytes again if and whenever the method `reset` is called. However, the stream is not required to remember any data at all if more than `readlimit` bytes are read from the stream before `reset` is called.

Marking a closed stream should not have any effect on the stream.

Overrides:
  `mark` in class `InputStream`
Parameters:
  `readlimit` - the maximum limit of bytes that can be read before the mark position becomes invalid.
See Also:
  - `InputStream.reset()`

### reset

public void reset() throws IOException
Repositions this stream to the position at the time the `mark` method was last called on this input stream. NB: If mark is not called we move to the beginning.

Overrides:
  `reset` in class `InputStream`
Throws:
  `IOException`
See Also:
  - `InputStream.mark(int)`
  - `IOException`

### markSupported

public boolean markSupported()
Tests if this input stream supports the `mark` and `reset` methods. The `markSupported` method of `InputStream` returns `false`.

Overrides:
  `markSupported` in class `InputStream`
Returns:
  `true` if this true type supports the mark and reset method; `false` otherwise.
See Also:
  - `InputStream.mark(int)`
  - `InputStream.reset()`