org.firebirdsql.jdbc

## Class FBBlobInputStream

- java.lang.Object
- - java.io.InputStream
  - - org.firebirdsql.jdbc.FBBlobInputStream

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, FirebirdBlob.BlobInputStream

      public final class FBBlobInputStream
      extends java.io.InputStream
      implements FirebirdBlob.BlobInputStream

  An input stream for reading directly from a FBBlob instance.

- - ### Field Summary

    - ### Fields inherited from interface org.firebirdsql.jdbc.FirebirdBlob.BlobInputStream

      `SEEK_MODE_ABSOLUTE, SEEK_MODE_FROM_TAIL, SEEK_MODE_RELATIVE`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `available()` Get number of available bytes that can be read without blocking.
    `void` | `close()` Close this stream.
    `FirebirdBlob` | `getBlob()` Get instance of `FirebirdBlob` to which this stream belongs to.
    `long` | `length()` Get Blob length.
    `int` | `read()` Read a single byte from the stream.
    `int` | `read(byte[] b, int off, int len)` Read some bytes from the stream into `buffer`.
    `void` | `readFully(byte[] b)` Read `buffer.length` bytes from the buffer.
    `void` | `readFully(byte[] b, int off, int len)` Read `length` from the stream into the specified buffer.
    `int` | `readNBytes(byte[] b, int off, int len)` Similar to Java 9's `InputStream#readNBytes(byte[], int, int)`
    `byte[]` | `readNBytes(int len)` Similar to Java 9's `InputStream#readNBytes(int)`.
    `void` | `seek(int position)` Move current position in the Blob stream.
    `void` | `seek(int position, FbBlob.SeekMode seekMode)`
    `void` | `seek(int position, int seekMode)` Move current position in the Blob stream.
    `long` | `transferTo(java.io.OutputStream out)`

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

      `mark, markSupported, read, reset, skip`

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

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

- - ### Method Detail

    - #### getBlob

          public FirebirdBlob getBlob()

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Get instance of `FirebirdBlob` to which this stream belongs to.

      Note, code

           FirebirdBlob.BlobInputStream otherStream = (FirebirdBlob.BlobInputStream)
               inputStream.getBlob().getBinaryStream();

      will return new stream object.
      Specified by:
        `getBlob` in interface `FirebirdBlob.BlobInputStream`
      Returns:
        instance of `FirebirdBlob`.

    - #### seek

          public void seek(int position)
                    throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Move current position in the Blob stream. This is a shortcut method to `FirebirdBlob.BlobInputStream.seek(int, int)` passing `FirebirdBlob.BlobInputStream.SEEK_MODE_ABSOLUTE` as seek mode.
      Specified by:
        `seek` in interface `FirebirdBlob.BlobInputStream`
      Parameters:
        `position` - absolute position to seek, starting position is 0 (note, in `Blob.getBytes(long, int)` starting position is 1).
      Throws:
        `java.io.IOException` - if I/O error occurs.

    - #### seek

          public void seek(int position,
                           int seekMode)
                    throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Move current position in the Blob stream. Depending on the specified seek mode, position can be either positive or negative.
      Specified by:
        `seek` in interface `FirebirdBlob.BlobInputStream`
      Parameters:
        `position` - position in the stream, starting position is 0 (note, in `Blob.getBytes(long, int)` starting position is 1)
        `seekMode` - mode of seek operation, one of `FirebirdBlob.BlobInputStream.SEEK_MODE_ABSOLUTE`, `FirebirdBlob.BlobInputStream.SEEK_MODE_RELATIVE` or `FirebirdBlob.BlobInputStream.SEEK_MODE_FROM_TAIL`
      Throws:
        `java.io.IOException` - if I/O error occurs

    - #### seek

          public void seek(int position,
                           FbBlob.SeekMode seekMode)
                    throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### length

          public long length()
                      throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Get Blob length. This is a shortcut for `inputStream.getBlob().length()` call, and is more resource friendly, because no new Blob handle is created.
      Specified by:
        `length` in interface `FirebirdBlob.BlobInputStream`
      Returns:
        length of the blob
      Throws:
        `java.io.IOException` - if I/O error occurs

    - #### available

          public int available()
                        throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Get number of available bytes that can be read without blocking. This method will return number of bytes of the last read blob segment in the blob buffer.
      Specified by:
        `available` in interface `FirebirdBlob.BlobInputStream`
      Overrides:
        `available` in class `java.io.InputStream`
      Returns:
        number of bytes available without blocking or -1 if end of stream is reached.
      Throws:
        `java.io.IOException` - if I/O error occurred.

    - #### read

          public int read()
                   throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Read a single byte from the stream.
      Specified by:
        `read` in interface `FirebirdBlob.BlobInputStream`
      Specified by:
        `read` in class `java.io.InputStream`
      Returns:
        next byte read from the stream or `-1` if end of stream was reached
      Throws:
        `java.io.IOException` - if I/O error occurs
      See Also:
        `InputStream.read()`

    - #### read

          public int read(byte[] b,
                          int off,
                          int len)
                   throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Read some bytes from the stream into `buffer`.

      The implementation may read less bytes than requested. Implementations may perform multiple roundtrips to the server to fill `buffer` up to the requested length.

      Specified by:
        `read` in interface `FirebirdBlob.BlobInputStream`
      Overrides:
        `read` in class `java.io.InputStream`
      Parameters:
        `b` - buffer into which data should be read
        `off` - offset in the buffer where to start
        `len` - number of bytes to read
      Returns:
        number of bytes that were actually read, returns `0` if `len == 0`, `-1` if end-of-blob was reached without reading any bytes
      Throws:
        `java.io.IOException` - if I/O error occurs
      See Also:
        `InputStream.read(byte[], int, int)`

    - #### readNBytes

          public int readNBytes(byte[] b,
                                int off,
                                int len)
                         throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Similar to Java 9's `InputStream#readNBytes(byte[], int, int)`
      Specified by:
        `readNBytes` in interface `FirebirdBlob.BlobInputStream`
      Throws:
        `java.io.IOException`

    - #### readNBytes

          public byte[] readNBytes(int len)
                            throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Similar to Java 9's `InputStream#readNBytes(int)`.
      Specified by:
        `readNBytes` in interface `FirebirdBlob.BlobInputStream`
      Throws:
        `java.io.IOException`

    - #### readFully

          public void readFully(byte[] b,
                                int off,
                                int len)
                         throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Read `length` from the stream into the specified buffer.

      This method will throw an `EOFException` if end-of-blob was reached before reading `length` bytes.

      Specified by:
        `readFully` in interface `FirebirdBlob.BlobInputStream`
      Parameters:
        `b` - buffer where data should be read
        `off` - offset in the buffer where to start
        `len` - number of bytes to read
      Throws:
        `java.io.EOFException` - if stream end was reached when reading data.
        `java.io.IOException` - if I/O error occurs.

    - #### readFully

          public void readFully(byte[] b)
                         throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Read `buffer.length` bytes from the buffer. This is a shortcut method for `readFully(buffer, 0, buffer.length)` call.
      Specified by:
        `readFully` in interface `FirebirdBlob.BlobInputStream`
      Parameters:
        `b` - buffer where data should be read
      Throws:
        `java.io.IOException` - if I/O error occurs

    - #### transferTo

          public long transferTo(java.io.OutputStream out)
                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### close

          public void close()
                     throws java.io.IOException

      Description copied from interface: `FirebirdBlob.BlobInputStream`
      Close this stream.
      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Specified by:
        `close` in interface `FirebirdBlob.BlobInputStream`
      Overrides:
        `close` in class `java.io.InputStream`
      Throws:
        `java.io.IOException` - if I/O error occurs.

Copyright © 2001-2025 Jaybird (Firebird JDBC) team. All rights reserved.