org.firebirdsql.jdbc
Class FBBlobInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by org.firebirdsql.jdbc.FBBlobInputStream
All Implemented Interfaces:
java.io.Closeable, FirebirdBlob.BlobInputStream

public 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
 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 single byte from the stream.
 int read(byte[] b, int off, int len)
          Read some bytes from the stream without blocking.
 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.
 void seek(int position)
          Move current position in the Blob stream.
 void seek(int position, int seekMode)
          Move current position in the Blob stream.
 
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.

Note, this method allows to move position in the Blob stream only forward. If you need to read data before the current position, new stream must be opened.

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 erro occurs.

length

public long length()
            throws java.io.IOException
Description copied from interface: FirebirdBlob.BlobInputStream
Get Blob length. This is shortcut method for the inputStream.getBlob().length() call, however 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 occured.

read

public int read()
         throws java.io.IOException
Description copied from interface: FirebirdBlob.BlobInputStream
Read 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.

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 without blocking.

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 read.
Throws:
java.io.IOException - if I/O error occurs.

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 can block until desired number of bytes is read, it can throw an exception if end of stream was reached during read.

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.

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 FirebirdBlob.BlobInputStream
Overrides:
close in class java.io.InputStream
Throws:
java.io.IOException - if I/O error occurs.


Copyright © 2001-2019 Jaybird (Firebird JDBC/JCA) team. All rights reserved.