Class ArrayInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.apache.derby.iapi.services.io.ArrayInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.DataInput
,java.io.ObjectInput
,java.lang.AutoCloseable
,ErrorInfo
,ErrorObjectInput
,Limit
,LimitObjectInput
public final class ArrayInputStream extends java.io.InputStream implements LimitObjectInput
An InputStream that allows reading from an array of bytes. The array of bytes that is read from can be changed without having to create a new instance of this class.
-
-
Constructor Summary
Constructors Constructor Description ArrayInputStream()
Create an ArrayInputStream with a zero length byte array.ArrayInputStream(byte[] data)
Create an ArrayInputStream with the passed in data.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
int
clearLimit()
Clears the limit by setting the limit to be the entire byte array.byte[]
getData()
Return a reference to the array of bytes this stream is going to read from so that caller may load it with stuffjava.lang.String
getErrorInfo()
java.lang.Exception
getNestedException()
int
getPosition()
int
read()
int
read(byte[] b, int off, int len)
boolean
readBoolean()
byte
readByte()
char
readChar()
int
readCompressedInt()
Read a compressed int from the stream.long
readCompressedLong()
Read a compressed long from the stream.int
readDerbyUTF(char[][] rawData_array, int utflen)
read in a Derby UTF formated string into a char[].double
readDouble()
float
readFloat()
void
readFully(byte[] b)
void
readFully(byte[] b, int off, int len)
int
readInt()
java.lang.String
readLine()
long
readLong()
java.lang.Object
readObject()
short
readShort()
int
readUnsignedByte()
int
readUnsignedShort()
java.lang.String
readUTF()
void
setData(byte[] data)
Set the array of bytes to be read.void
setLimit(int length)
Set the limit of the data that can be read or written.void
setLimit(int offset, int length)
A setLimit which also sets the position to be offset.void
setPosition(int newPosition)
long
skip(long count)
Skip as many bytes as possible, but no more thancount
.int
skipBytes(int n)
Skip as many bytes as possible, but no more thann
.-
Methods inherited from class java.io.InputStream
close, mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, transferTo
-
-
-
-
Field Detail
-
pageData
private byte[] pageData
-
start
private int start
-
end
private int end
-
position
private int position
-
oi
private ErrorObjectInput oi
-
-
Constructor Detail
-
ArrayInputStream
public ArrayInputStream()
Create an ArrayInputStream with a zero length byte array. The position is set to 0 and the limit is the entire byte array.
-
ArrayInputStream
public ArrayInputStream(byte[] data)
Create an ArrayInputStream with the passed in data. The position is set to 0 and the limit is the entire byte array.- Parameters:
data
-
-
-
Method Detail
-
setData
public void setData(byte[] data)
Set the array of bytes to be read. Position is set to zero.
-
getData
public byte[] getData()
Return a reference to the array of bytes this stream is going to read from so that caller may load it with stuff
-
read
public int read() throws java.io.IOException
- Specified by:
read
in interfacejava.io.ObjectInput
- Specified by:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Specified by:
read
in interfacejava.io.ObjectInput
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
skip
public long skip(long count) throws java.io.IOException
Skip as many bytes as possible, but no more thancount
.- Specified by:
skip
in interfacejava.io.ObjectInput
- Overrides:
skip
in classjava.io.InputStream
- Parameters:
count
- the number of bytes to skip- Returns:
- the number of bytes that were skipped
- Throws:
java.io.IOException
-
getPosition
public int getPosition()
-
setPosition
public final void setPosition(int newPosition) throws java.io.IOException
- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException
- Specified by:
available
in interfacejava.io.ObjectInput
- Overrides:
available
in classjava.io.InputStream
- Throws:
java.io.IOException
-
setLimit
public void setLimit(int offset, int length) throws java.io.IOException
A setLimit which also sets the position to be offset.- Throws:
java.io.IOException
- limit is out of range
-
setLimit
public final void setLimit(int length) throws java.io.IOException
Description copied from interface:Limit
Set the limit of the data that can be read or written. After this call up to and including length bytes can be read from or skipped in the stream.On input classes (e.g. InputStreams) any attempt to read or skip beyond the limit will result in an end of file indication (e.g. read() methods returning -1 or throwing EOFException).
On output classes (e.g. OutputStream) any attempt to write more beyond the limit will result in an EOFException
-
clearLimit
public final int clearLimit()
Clears the limit by setting the limit to be the entire byte array.- Specified by:
clearLimit
in interfaceLimit
- Returns:
- the number of bytes within the limit that have not been read or written.
- See Also:
Limit.clearLimit()
-
readFully
public final void readFully(byte[] b) throws java.io.IOException
- Specified by:
readFully
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readFully
public final void readFully(byte[] b, int off, int len) throws java.io.IOException
- Specified by:
readFully
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
skipBytes
public final int skipBytes(int n) throws java.io.IOException
Skip as many bytes as possible, but no more thann
.- Specified by:
skipBytes
in interfacejava.io.DataInput
- Parameters:
n
- the number of bytes to skip- Returns:
- the number of bytes that were skipped
- Throws:
java.io.IOException
-
readBoolean
public final boolean readBoolean() throws java.io.IOException
- Specified by:
readBoolean
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readByte
public final byte readByte() throws java.io.IOException
- Specified by:
readByte
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUnsignedByte
public final int readUnsignedByte() throws java.io.IOException
- Specified by:
readUnsignedByte
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readShort
public final short readShort() throws java.io.IOException
- Specified by:
readShort
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUnsignedShort
public final int readUnsignedShort() throws java.io.IOException
- Specified by:
readUnsignedShort
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readChar
public final char readChar() throws java.io.IOException
- Specified by:
readChar
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readInt
public final int readInt() throws java.io.IOException
- Specified by:
readInt
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readLong
public final long readLong() throws java.io.IOException
- Specified by:
readLong
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readFloat
public final float readFloat() throws java.io.IOException
- Specified by:
readFloat
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readDouble
public final double readDouble() throws java.io.IOException
- Specified by:
readDouble
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readLine
public final java.lang.String readLine() throws java.io.IOException
- Specified by:
readLine
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readUTF
public final java.lang.String readUTF() throws java.io.IOException
- Specified by:
readUTF
in interfacejava.io.DataInput
- Throws:
java.io.IOException
-
readDerbyUTF
public final int readDerbyUTF(char[][] rawData_array, int utflen) throws java.io.IOException
read in a Derby UTF formated string into a char[].This routine inline's the code to read a UTF format string from a byte[] array (pageData), into a char[] array. The string will be read into the char[] array passed into this routine through rawData_array[0] if it is big enough. If it is not big enough a new char[] will be alocated and returned to the caller by putting it into rawData_array[0].
To see detailed description of the Derby UTF format see the writeExternal() routine of SQLChar.
The routine returns the number of char's read into the returned char[], note that this length may smaller than the actual length of the char[] array.
The stream must be positioned on the first user byte when this method is invoked.
- Parameters:
rawData_array
- This parameter uses a element array to implement an in/out function parameter. The char[] array in rawData_array[0] is used to read the data into unless it is not big enough, then a new array is allocated and the old one discarded. In either case on return rawData_array[0] contains the filled in char[] - caller must allow that the array may or may not be different from the one passed in.utflen
- the byte length of the value, or0
if unknown- Returns:
- The the number of valid char's in the returned char[].
- Throws:
java.io.IOException
- if an I/O error happens
-
readCompressedInt
public final int readCompressedInt() throws java.io.IOException
Read a compressed int from the stream.Read a compressed int from the stream, which is assumed to have been written by a call to CompressNumber.writeInt().
Code from CompressedNumber is inlined here so that these fields can be read from the array with a minimum of function calls.
The format of a compressed int is as follows: Formats are (with x representing value bits):
1 Byte- 00xxxxxx val <= 63 (0x3f) 2 Byte- 01xxxxxx xxxxxxxx val > 63 && <= 16383 (0x3fff) 4 byte- 1xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx val > 16383 && <= MAX_INT
- Throws:
java.io.IOException
- if an I/O error happens
-
readCompressedLong
public final long readCompressedLong() throws java.io.IOException
Read a compressed long from the stream.Read a compressed long from the stream, which is assumed to have been written by a call to CompressNumber.writeLong().
Code from CompressedNumber is inlined here so that these fields can be read from the array with a minimum of function calls.
The format of a compressed int is as follows: Formats are (with x representing value bits):
value ≷= 16383 (0x3fff): 2 byte - 00xxxxxx xxxxxxxx value > 16383 && <= 0x3fffffff: 4 byte - 01xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx value < 0x3fffffff &< <= MAX_LONG: 8 byte - 1xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
- Throws:
java.io.IOException
-
readObject
public java.lang.Object readObject() throws java.lang.ClassNotFoundException, java.io.IOException
- Specified by:
readObject
in interfacejava.io.ObjectInput
- Throws:
java.lang.ClassNotFoundException
java.io.IOException
-
getErrorInfo
public java.lang.String getErrorInfo()
- Specified by:
getErrorInfo
in interfaceErrorInfo
- Specified by:
getErrorInfo
in interfaceErrorObjectInput
-
getNestedException
public java.lang.Exception getNestedException()
- Specified by:
getNestedException
in interfaceErrorInfo
- Specified by:
getNestedException
in interfaceErrorObjectInput
-
-