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 intavailable()intclearLimit()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.StringgetErrorInfo()java.lang.ExceptiongetNestedException()intgetPosition()intread()intread(byte[] b, int off, int len)booleanreadBoolean()bytereadByte()charreadChar()intreadCompressedInt()Read a compressed int from the stream.longreadCompressedLong()Read a compressed long from the stream.intreadDerbyUTF(char[][] rawData_array, int utflen)read in a Derby UTF formated string into a char[].doublereadDouble()floatreadFloat()voidreadFully(byte[] b)voidreadFully(byte[] b, int off, int len)intreadInt()java.lang.StringreadLine()longreadLong()java.lang.ObjectreadObject()shortreadShort()intreadUnsignedByte()intreadUnsignedShort()java.lang.StringreadUTF()voidsetData(byte[] data)Set the array of bytes to be read.voidsetLimit(int length)Set the limit of the data that can be read or written.voidsetLimit(int offset, int length)A setLimit which also sets the position to be offset.voidsetPosition(int newPosition)longskip(long count)Skip as many bytes as possible, but no more thancount.intskipBytes(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:
readin interfacejava.io.ObjectInput- Specified by:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException- Specified by:
readin interfacejava.io.ObjectInput- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
skip
public long skip(long count) throws java.io.IOExceptionSkip as many bytes as possible, but no more thancount.- Specified by:
skipin interfacejava.io.ObjectInput- Overrides:
skipin 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:
availablein interfacejava.io.ObjectInput- Overrides:
availablein classjava.io.InputStream- Throws:
java.io.IOException
-
setLimit
public void setLimit(int offset, int length) throws java.io.IOExceptionA 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.IOExceptionDescription copied from interface:LimitSet 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:
clearLimitin 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:
readFullyin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readFully
public final void readFully(byte[] b, int off, int len) throws java.io.IOException- Specified by:
readFullyin interfacejava.io.DataInput- Throws:
java.io.IOException
-
skipBytes
public final int skipBytes(int n) throws java.io.IOExceptionSkip as many bytes as possible, but no more thann.- Specified by:
skipBytesin 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:
readBooleanin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readByte
public final byte readByte() throws java.io.IOException- Specified by:
readBytein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readUnsignedByte
public final int readUnsignedByte() throws java.io.IOException- Specified by:
readUnsignedBytein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readShort
public final short readShort() throws java.io.IOException- Specified by:
readShortin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readUnsignedShort
public final int readUnsignedShort() throws java.io.IOException- Specified by:
readUnsignedShortin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readChar
public final char readChar() throws java.io.IOException- Specified by:
readCharin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readInt
public final int readInt() throws java.io.IOException- Specified by:
readIntin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readLong
public final long readLong() throws java.io.IOException- Specified by:
readLongin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readFloat
public final float readFloat() throws java.io.IOException- Specified by:
readFloatin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readDouble
public final double readDouble() throws java.io.IOException- Specified by:
readDoublein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readLine
public final java.lang.String readLine() throws java.io.IOException- Specified by:
readLinein interfacejava.io.DataInput- Throws:
java.io.IOException
-
readUTF
public final java.lang.String readUTF() throws java.io.IOException- Specified by:
readUTFin interfacejava.io.DataInput- Throws:
java.io.IOException
-
readDerbyUTF
public final int readDerbyUTF(char[][] rawData_array, int utflen) throws java.io.IOExceptionread 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, or0if 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.IOExceptionRead 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.IOExceptionRead 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:
readObjectin interfacejava.io.ObjectInput- Throws:
java.lang.ClassNotFoundExceptionjava.io.IOException
-
getErrorInfo
public java.lang.String getErrorInfo()
- Specified by:
getErrorInfoin interfaceErrorInfo- Specified by:
getErrorInfoin interfaceErrorObjectInput
-
getNestedException
public java.lang.Exception getNestedException()
- Specified by:
getNestedExceptionin interfaceErrorInfo- Specified by:
getNestedExceptionin interfaceErrorObjectInput
-
-