org.firebirdsql.jdbc

Interface FirebirdBlob.BlobInputStream

Known Implementing Classes:
FBBlob.FBBlobInputStream

public static interface FirebirdBlob.BlobInputStream

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

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

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[] buffer, int offset, int length)
Read some bytes from the stream without blocking.
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.
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 Details

SEEK_MODE_ABSOLUTE

public static final int SEEK_MODE_ABSOLUTE
Seek based on the absolute beginning of the stream
Field Value:
0

SEEK_MODE_FROM_TAIL

public static final int SEEK_MODE_FROM_TAIL
Seek relative to the tail end of the stream
Field Value:
2

SEEK_MODE_RELATIVE

public static final int SEEK_MODE_RELATIVE
Seek relative to the current position in the stream
Field Value:
1

Method Details

available

public int available()
            throws 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.

close

public void close()
            throws IOException
Close this stream.

getBlob

public 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.

length

public long length()
            throws IOException
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.
Returns:
length of the blob.

read

public int read()
            throws IOException
Read single byte from the stream.
Returns:
next byte read from the stream or -1 if end of stream was reached.

read

public int read(byte[] buffer,
                int offset,
                int length)
            throws IOException
Read some bytes from the stream without blocking.
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 read.

readFully

public void readFully(byte[] buffer)
            throws 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.

readFully

public void readFully(byte[] buffer,
                      int offset,
                      int length)
            throws IOException
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.
Parameters:
buffer - buffer where data should be read.
offset - offset in the buffer where to start.
length - number of bytes to read.

seek

public void seek(int position)
            throws IOException
Parameters:
position - absolute position to seek, starting position is 0 (note, in Blob.getBytes(long, int) starting position is 1).

seek

public void seek(int position,
                 int seekMode)
            throws IOException
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.


Copyright B) 2001 David Jencks and other authors. All rights reserved.