Package org.firebirdsql.jdbc
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 theInputStream
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 streamstatic int
SEEK_MODE_FROM_TAIL
Seek relative to the tail end of the streamstatic 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 ofFirebirdBlob
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 intobuffer
.void
readFully(byte[] buffer)
Readbuffer.length
bytes from the buffer.void
readFully(byte[] buffer, int offset, int length)
Readlength
from the stream into the specified buffer.int
readNBytes(byte[] b, int off, int len)
Similar to Java 9'sInputStream#readNBytes(byte[], int, int)
byte[]
readNBytes(int len)
Similar to Java 9'sInputStream#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 ofFirebirdBlob
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 interfacejava.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 forinputStream.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 intobuffer
.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 readoffset
- offset in the buffer where to startlength
- number of bytes to read- Returns:
- number of bytes that were actually read, returns
0
iflen == 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
Readlength
from the stream into the specified buffer.This method will throw an
EOFException
if end-of-blob was reached before readinglength
bytes.- Parameters:
buffer
- buffer where data should be readoffset
- offset in the buffer where to startlength
- 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
Readbuffer.length
bytes from the buffer. This is a shortcut method forreadFully(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'sInputStream#readNBytes(byte[], int, int)
- Throws:
java.io.IOException
-
readNBytes
byte[] readNBytes(int len) throws java.io.IOException
Similar to Java 9'sInputStream#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 toseek(int, int)
passingSEEK_MODE_ABSOLUTE
as seek mode.- 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
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, inBlob.getBytes(long, int)
starting position is 1)seekMode
- mode of seek operation, one ofSEEK_MODE_ABSOLUTE
,SEEK_MODE_RELATIVE
orSEEK_MODE_FROM_TAIL
- Throws:
java.io.IOException
- if I/O error occurs
-
-