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.
  `int`
  `read(byte[] dest, int off, int len)`
  `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, 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`

  - ### read

    public int read(byte[] dest, int off, int len) throws IOException
    Overrides:
      `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()`