public class LOBInputStream extends java.io.InputStream implements PositionedStream
LOBStreamControl
.
All the read methods are routed to LOBStreamControl
.
Modifier and Type | Field and Description |
---|---|
private boolean |
closed |
private LOBStreamControl |
control |
private long |
pos |
private long |
updateCount |
Constructor and Description |
---|
LOBInputStream(LOBStreamControl control,
long position) |
Modifier and Type | Method and Description |
---|---|
java.io.InputStream |
asInputStream()
Returns a reference to self as an
InputStream . |
void |
close()
Closes this input stream and releases any system resources associated
with the stream.
|
long |
getPosition()
Returns the current byte position.
|
(package private) boolean |
isObsolete()
Checks if underlying StreamControl has been updated.
|
(package private) long |
length()
Returns size of stream in bytes.
|
int |
read()
Reads the next byte of data from the input stream.
|
int |
read(byte[] b,
int off,
int len)
Reads up to
len bytes of data from the input stream into
an array of bytes. |
(package private) void |
reInitialize()
Reinitializes the stream and sets the current pointer to zero.
|
void |
reposition(long requestedPos)
Repositions the stream to the requested byte position.
|
private boolean closed
private final LOBStreamControl control
private long pos
private long updateCount
LOBInputStream(LOBStreamControl control, long position)
public int read(byte[] b, int off, int len) throws java.io.IOException
len
bytes of data from the input stream into
an array of bytes. An attempt is made to read as many as
len
bytes, but a smaller number may be read.
The number of bytes actually read is returned as an integer.
This method blocks until input data is available, end of file is detected, or an exception is thrown.
If b
is null
, a
NullPointerException
is thrown.
If off
is negative, or len
is negative, or
off+len
is greater than the length of the array
b
, then an IndexOutOfBoundsException
is
thrown.
If len
is zero, then no bytes are read and
0
is returned; otherwise, there is an attempt to read at
least one byte. If no byte is available because the stream is at end of
file, the value -1
is returned; otherwise, at least one
byte is read and stored into b
.
The first byte read is stored into element b[off]
, the
next one into b[off+1]
, and so on. The number of bytes read
is, at most, equal to len
. Let k be the number of
bytes actually read; these bytes will be stored in elements
b[off]
through b[off+
k-1]
,
leaving elements b[off+
k]
through
b[off+len-1]
unaffected.
In every case, elements b[0]
through
b[off]
and elements b[off+len]
through
b[b.length-1]
are unaffected.
If the first byte cannot be read for any reason other than end of
file, then an IOException
is thrown. In particular, an
IOException
is thrown if the input stream has been closed.
The read(b,
off,
len)
method
for class InputStream
simply calls the method
read()
repeatedly. If the first such call results in an
IOException
, that exception is returned from the call to
the read(b,
off,
len)
method. If
any subsequent call to read()
results in a
IOException
, the exception is caught and treated as if it
were end of file; the bytes read up to that point are stored into
b
and the number of bytes read before the exception
occurred is returned. Subclasses are encouraged to provide a more
efficient implementation of this method.
read
in class java.io.InputStream
b
- the buffer into which the data is read.off
- the start offset in array b
at which the data is written.len
- the maximum number of bytes to read.-1
if there is no more data because the end of
the stream has been reached.java.io.IOException
- if an I/O error occurs.java.lang.NullPointerException
- if b
is null
.InputStream.read()
public void close() throws java.io.IOException
The close
method of InputStream
does
nothing.
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in class java.io.InputStream
java.io.IOException
- if an I/O error occurs.public int read() throws java.io.IOException
int
in the range 0
to
255
. If no byte is available because the end of the stream
has been reached, the value -1
is returned. This method
blocks until input data is available, the end of the stream is detected,
or an exception is thrown.
A subclass must provide an implementation of this method.
read
in class java.io.InputStream
-1
if the end of the
stream is reached.java.io.IOException
- if an I/O error occurs.boolean isObsolete()
void reInitialize()
long length() throws java.io.IOException
java.io.IOException
public java.io.InputStream asInputStream()
PositionedStream
InputStream
.
This method is not allowed to return null
.
asInputStream
in interface PositionedStream
InputStream
reference to self.public long getPosition()
getPosition
in interface PositionedStream
public void reposition(long requestedPos) throws java.io.IOException
reposition
in interface PositionedStream
requestedPos
- the requested position, starting at 0
java.io.EOFException
- if the requested position is larger than the lengthjava.io.IOException
- if obtaining the stream length failsApache Derby V10.13 Internals - Copyright © 2004,2016 The Apache Software Foundation. All Rights Reserved.