com.foundationdb.sql.jdbc.largeobject

## Class BlobInputStream

- java.lang.Object
- - java.io.InputStream
  - - com.foundationdb.sql.jdbc.largeobject.BlobInputStream

All Implemented Interfaces:
  java.io.Closeable, java.lang.AutoCloseable

    public class BlobInputStream
    extends java.io.InputStream

This is an implementation of an InputStream from a large object.

### Constructor Summary

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

### Method Summary

Methods
`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, read, read, skip`

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

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

### Constructor Detail

#### 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

### Method Detail

#### read

    public int read()
             throws java.io.IOException

The minimum required to implement input stream

Specified by:
  `read` in class `java.io.InputStream`
Throws:
  `java.io.IOException`

#### close

    public void close()
               throws java.io.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 `java.io.Closeable`
Specified by:
  `close` in interface `java.lang.AutoCloseable`
Overrides:
  `close` in class `java.io.InputStream`
Throws:
  `java.io.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 `java.io.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 java.io.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 begining.

Overrides:
  `reset` in class `java.io.InputStream`
Throws:
  `java.io.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 `java.io.InputStream`
Returns:
  `true` if this true type supports the mark and reset method; `false` otherwise.
See Also:
  `InputStream.mark(int)`, `InputStream.reset()`