Package 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 Description int
available()
Get number of available bytes that can be read without blocking.void
close()
Close this stream.FirebirdBlob
getBlob()
Get instance ofFirebirdBlob
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)
Readbuffer.length
bytes from the buffer.void
readFully(byte[] b, int off, int len)
Readlength
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.void
seek(int position, FbBlob.SeekMode seekMode)
-
-
-
Method Detail
-
getBlob
public FirebirdBlob getBlob()
Description copied from interface:FirebirdBlob.BlobInputStream
Get instance ofFirebirdBlob
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 interfaceFirebirdBlob.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 toFirebirdBlob.BlobInputStream.seek(int, int)
passingFirebirdBlob.BlobInputStream.SEEK_MODE_ABSOLUTE
as seek mode.- Specified by:
seek
in interfaceFirebirdBlob.BlobInputStream
- Parameters:
position
- absolute position to seek, starting position is 0 (note, inBlob.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 interfaceFirebirdBlob.BlobInputStream
- Parameters:
position
- position in the stream, starting position is 0 (note, inBlob.getBytes(long, int)
starting position is 1).seekMode
- mode of seek operation, one ofFirebirdBlob.BlobInputStream.SEEK_MODE_ABSOLUTE
,FirebirdBlob.BlobInputStream.SEEK_MODE_RELATIVE
orFirebirdBlob.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 shortcut method for theinputStream.getBlob().length()
call, however is more resource friendly, because no new Blob handle is created.- Specified by:
length
in interfaceFirebirdBlob.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 interfaceFirebirdBlob.BlobInputStream
- Overrides:
available
in classjava.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 single byte from the stream.- Specified by:
read
in interfaceFirebirdBlob.BlobInputStream
- Specified by:
read
in classjava.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 interfaceFirebirdBlob.BlobInputStream
- Overrides:
read
in classjava.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
Readlength
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 interfaceFirebirdBlob.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
Readbuffer.length
bytes from the buffer. This is a shortcut method forreadFully(buffer, 0, buffer.length)
call.- Specified by:
readFully
in interfaceFirebirdBlob.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 interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in interfaceFirebirdBlob.BlobInputStream
- Overrides:
close
in classjava.io.InputStream
- Throws:
java.io.IOException
- if I/O error occurs.
-
-