Module org.firebirdsql.jaybird
Package org.firebirdsql.jdbc

# Class FBBlobOutputStream

java.lang.Object
java.io.OutputStream
org.firebirdsql.jdbc.FBBlobOutputStream

All Implemented Interfaces:
  `Closeable`, `Flushable`, `AutoCloseable`, `FirebirdBlob.BlobOutputStream`

@InternalApi public final class FBBlobOutputStream extends OutputStream implements FirebirdBlob.BlobOutputStream
`OutputStream` for writing Firebird blobs.

This class is internal API of Jaybird. Future versions may radically change, move, or make inaccessible this type. For the public API, refer to the `FirebirdBlob.BlobOutputStream` interface.

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Close this stream.
`void`
`flush()`
`FirebirdBlob`
`getBlob()`
Get instance of `FirebirdBlob` to which this stream belongs to.
`long`
`length()`
Get Blob length.
`void`
`write(byte[] b, int off, int len)`
Write data from the buffer into this stream.
`void`
`write(int b)`
Write single byte into the stream.

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

`nullOutputStream, write`

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

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

## Method Details

### getBlob

public FirebirdBlob getBlob()
Description copied from interface: `FirebirdBlob.BlobOutputStream`
Get instance of `FirebirdBlob` to which this stream belongs to.

Note, code

     FirebirdBlob.BlobOutputStream otherStream = (FirebirdBlob.BlobOutputStream)
         inputStream.getBlob().setBinaryStream(1);

will return new stream object.

Specified by:
  `getBlob` in interface `FirebirdBlob.BlobOutputStream`
Returns:
  instance of `FirebirdBlob`.

### length

public long length() throws IOException
Description copied from interface: `FirebirdBlob.BlobOutputStream`
Get Blob length. This method is the only available way to obtain length of a Blob that is in temporary state,

Specified by:
  `length` in interface `FirebirdBlob.BlobOutputStream`
Returns:
  length of the blob.
Throws:
  `IOException` - if I/O error occurs.

### write

public void write(int b) throws IOException
Write single byte into the stream.

Writes are buffered up to the buffer length of the blob (optionally specified by the connection property `blobBufferSize`).

Specified by:
  `write` in interface `FirebirdBlob.BlobOutputStream`
Specified by:
  `write` in class `OutputStream`
Parameters:
  `b` - data to write, only lowest 8 bits are written.
Throws:
  `IOException` - if I/O error occurs.

### write

public void write(byte[] b, int off, int len) throws IOException
Write data from the buffer into this stream.

Writes are buffered up to the buffer length of the blob (optionally specified by the connection property `blobBufferSize`).

Specified by:
  `write` in interface `FirebirdBlob.BlobOutputStream`
Overrides:
  `write` in class `OutputStream`
Parameters:
  `b` - buffer from which data should be written.
  `off` - offset in the buffer.
  `len` - number of bytes to write.
Throws:
  `IOException` - if I/O error occurs.

### flush

public void flush() throws IOException

Specified by:
  `flush` in interface `Flushable`
Overrides:
  `flush` in class `OutputStream`
Throws:
  `IOException`

### close

public void close() throws IOException
Description copied from interface: `FirebirdBlob.BlobOutputStream`
Close this stream. Calling this method closes Blob stream and moves Blob from temporary into permanent state making any further content updates impossible.

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