Interface FirebirdBlob.BlobInputStream

  • All Superinterfaces:
    java.lang.AutoCloseable
    All Known Implementing Classes:
    FBBlobInputStream
    Enclosing interface:
    FirebirdBlob

    public static interface FirebirdBlob.BlobInputStream
    extends java.lang.AutoCloseable
    Blob input stream. This interface defines methods to access contents of the Blob field. Some method signatures are copied from the InputStream only because it is abstract class and not interface that we can extend.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int SEEK_MODE_ABSOLUTE
      Seek based on the absolute beginning of the stream
      static int SEEK_MODE_FROM_TAIL
      Seek relative to the tail end of the stream
      static int SEEK_MODE_RELATIVE
      Seek relative to the current position in the stream
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method 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[] buffer, int offset, int length)
      Read some bytes from the stream into buffer.
      void readFully​(byte[] buffer)
      Read buffer.length bytes from the buffer.
      void readFully​(byte[] buffer, int offset, int length)
      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, int seekMode)
      Move current position in the Blob stream.
    • Field Detail

      • SEEK_MODE_ABSOLUTE

        static final int SEEK_MODE_ABSOLUTE
        Seek based on the absolute beginning of the stream
        See Also:
        Constant Field Values
      • SEEK_MODE_RELATIVE

        static final int SEEK_MODE_RELATIVE
        Seek relative to the current position in the stream
        See Also:
        Constant Field Values
      • SEEK_MODE_FROM_TAIL

        static final int SEEK_MODE_FROM_TAIL
        Seek relative to the tail end of the stream
        See Also:
        Constant Field Values
    • Method Detail

      • getBlob

        FirebirdBlob getBlob()
        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.
        Returns:
        instance of FirebirdBlob.
      • available

        int available()
               throws java.io.IOException
        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.
        Returns:
        number of bytes available without blocking or -1 if end of stream is reached.
        Throws:
        java.io.IOException - if I/O error occurred.
      • close

        void close()
            throws java.io.IOException
        Close this stream.
        Specified by:
        close in interface java.lang.AutoCloseable
        Throws:
        java.io.IOException - if I/O error occurs.
      • length

        long length()
             throws java.io.IOException
        Get Blob length. This is a shortcut for inputStream.getBlob().length() call, and is more resource friendly, because no new Blob handle is created.
        Returns:
        length of the blob
        Throws:
        java.io.IOException - if I/O error occurs
      • read

        int read()
          throws java.io.IOException
        Read a single byte from the stream.
        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

        int read​(byte[] buffer,
                 int offset,
                 int length)
          throws java.io.IOException
        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.

        Parameters:
        buffer - buffer into which data should be read
        offset - offset in the buffer where to start
        length - 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)
      • readFully

        void readFully​(byte[] buffer,
                       int offset,
                       int length)
                throws java.io.IOException
        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.

        Parameters:
        buffer - buffer where data should be read
        offset - offset in the buffer where to start
        length - 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

        void readFully​(byte[] buffer)
                throws java.io.IOException
        Read buffer.length bytes from the buffer. This is a shortcut method for readFully(buffer, 0, buffer.length) call.
        Parameters:
        buffer - buffer where data should be read
        Throws:
        java.io.IOException - if I/O error occurs
      • readNBytes

        int readNBytes​(byte[] b,
                       int off,
                       int len)
                throws java.io.IOException
        Similar to Java 9's InputStream#readNBytes(byte[], int, int)
        Throws:
        java.io.IOException
      • readNBytes

        byte[] readNBytes​(int len)
                   throws java.io.IOException
        Similar to Java 9's InputStream#readNBytes(int).
        Throws:
        java.io.IOException
      • seek

        void seek​(int position)
           throws java.io.IOException
        Move current position in the Blob stream. This is a shortcut method to seek(int, int) passing SEEK_MODE_ABSOLUTE as seek mode.
        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

        void seek​(int position,
                  int seekMode)
           throws java.io.IOException
        Move current position in the Blob stream. Depending on the specified seek mode, position can be either positive or negative.
        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 SEEK_MODE_ABSOLUTE, SEEK_MODE_RELATIVE or SEEK_MODE_FROM_TAIL
        Throws:
        java.io.IOException - if I/O error occurs