Package com.esotericsoftware.kryo.io
Class Input
- java.lang.Object
-
- java.io.InputStream
-
- com.esotericsoftware.kryo.io.Input
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
- Direct Known Subclasses:
InputChunked
public class Input extends java.io.InputStream
An InputStream that reads data from a byte array and optionally fills the byte array from another OutputStream as needed. Utility methods are provided for efficiently reading primitive types and strings.
-
-
Constructor Summary
Constructors Constructor Description Input()
Creates an uninitialized Input.Input(byte[] buffer)
Creates a new Input for reading from a byte array.Input(byte[] buffer, int offset, int count)
Creates a new Input for reading from a byte array.Input(int bufferSize)
Creates a new Input for reading from a byte array.Input(java.io.InputStream inputStream)
Creates a new Input for reading from an InputStream with a buffer size of 4096.Input(java.io.InputStream inputStream, int bufferSize)
Creates a new Input for reading from an InputStream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
canReadInt()
Returns true if enough bytes are available to read an int withreadInt(boolean)
.boolean
canReadLong()
Returns true if enough bytes are available to read a long withreadLong(boolean)
.void
close()
Closes the underlying InputStream, if any.protected int
fill(byte[] buffer, int offset, int count)
Fills the buffer with more bytes.byte[]
getBuffer()
java.io.InputStream
getInputStream()
int
limit()
Returns the limit for the buffer.int
position()
Returns the current position in the buffer.int
read()
Reads a single byte as an int from 0 to 255, or -1 if there are no more bytes are available.int
read(byte[] bytes)
Reads bytes.length bytes or less and writes them to the specified byte[], starting at 0, and returns the number of bytes read.int
read(byte[] bytes, int offset, int count)
Reads count bytes or less and writes them to the specified byte[], starting at offset, and returns the number of bytes read or -1 if no more bytes are available.boolean
readBoolean()
Reads a 1 byte boolean.byte
readByte()
Reads a single byte.void
readBytes(byte[] bytes)
Reads bytes.length bytes and writes them to the specified byte[], starting at index 0.void
readBytes(byte[] bytes, int offset, int count)
Reads count bytes and writes them to the specified byte[], starting at offset.byte[]
readBytes(int length)
Reads the specified number of bytes into a new byte[].int
readByteUnsigned()
Reads a byte as an int from 0 to 255.char
readChar()
Reads a 2 byte char.double
readDouble()
Reads an 8 bytes double.double
readDouble(double precision, boolean optimizePositive)
Reads a 1-9 byte double with reduced precision.float
readFloat()
Reads a 4 byte float.float
readFloat(float precision, boolean optimizePositive)
Reads a 1-5 byte float with reduced precision.int
readInt()
Reads a 4 byte int.int
readInt(boolean optimizePositive)
Reads a 1-5 byte int.long
readLong()
Reads an 8 byte long.long
readLong(boolean optimizePositive)
Reads a 1-9 byte long.short
readShort()
Reads a 2 byte short.int
readShortUnsigned()
Reads a 2 byte short as an int from 0 to 65535.java.lang.String
readString()
Reads the length and string of UTF8 characters, or null.java.lang.StringBuilder
readStringBuilder()
Reads the length and string of UTF8 characters, or null.void
rewind()
Sets the position and total to zero.void
setBuffer(byte[] bytes)
Sets a new buffer.void
setBuffer(byte[] bytes, int offset, int count)
Sets a new buffer.void
setInputStream(java.io.InputStream inputStream)
Sets a new InputStream.void
setLimit(int limit)
Sets the limit in the buffer.void
setPosition(int position)
Sets the current position in the buffer.void
setTotal(int total)
Sets the number of bytes read.void
skip(int count)
Discards the specified number of bytes.long
skip(long count)
Discards the specified number of bytes.int
total()
Returns the number of bytes read.
-
-
-
Constructor Detail
-
Input
public Input()
Creates an uninitialized Input.setBuffer(byte[])
must be called before the Input is used.
-
Input
public Input(int bufferSize)
Creates a new Input for reading from a byte array.- Parameters:
bufferSize
- The size of the buffer. An exception is thrown if more bytes than this are read.
-
Input
public Input(byte[] buffer)
Creates a new Input for reading from a byte array.- Parameters:
buffer
- An exception is thrown if more bytes than this are read.
-
Input
public Input(byte[] buffer, int offset, int count)
Creates a new Input for reading from a byte array.- Parameters:
buffer
- An exception is thrown if more bytes than this are read.
-
Input
public Input(java.io.InputStream inputStream)
Creates a new Input for reading from an InputStream with a buffer size of 4096.
-
Input
public Input(java.io.InputStream inputStream, int bufferSize)
Creates a new Input for reading from an InputStream.
-
-
Method Detail
-
setBuffer
public void setBuffer(byte[] bytes)
Sets a new buffer. The position and total are reset, discarding any buffered bytes.
-
setBuffer
public void setBuffer(byte[] bytes, int offset, int count)
Sets a new buffer. The position and total are reset, discarding any buffered bytes.
-
getBuffer
public byte[] getBuffer()
-
getInputStream
public java.io.InputStream getInputStream()
-
setInputStream
public void setInputStream(java.io.InputStream inputStream)
Sets a new InputStream. The position and total are reset, discarding any buffered bytes.- Parameters:
inputStream
- May be null.
-
total
public int total()
Returns the number of bytes read.
-
setTotal
public void setTotal(int total)
Sets the number of bytes read.
-
position
public int position()
Returns the current position in the buffer.
-
setPosition
public void setPosition(int position)
Sets the current position in the buffer.
-
limit
public int limit()
Returns the limit for the buffer.
-
setLimit
public void setLimit(int limit)
Sets the limit in the buffer.
-
rewind
public void rewind()
Sets the position and total to zero.
-
skip
public void skip(int count) throws KryoException
Discards the specified number of bytes.- Throws:
KryoException
-
fill
protected int fill(byte[] buffer, int offset, int count) throws KryoException
Fills the buffer with more bytes. Can be overridden to fill the bytes from a source other than the InputStream.- Throws:
KryoException
-
read
public int read() throws KryoException
Reads a single byte as an int from 0 to 255, or -1 if there are no more bytes are available.- Specified by:
read
in classjava.io.InputStream
- Throws:
KryoException
-
read
public int read(byte[] bytes) throws KryoException
Reads bytes.length bytes or less and writes them to the specified byte[], starting at 0, and returns the number of bytes read.- Overrides:
read
in classjava.io.InputStream
- Throws:
KryoException
-
read
public int read(byte[] bytes, int offset, int count) throws KryoException
Reads count bytes or less and writes them to the specified byte[], starting at offset, and returns the number of bytes read or -1 if no more bytes are available.- Overrides:
read
in classjava.io.InputStream
- Throws:
KryoException
-
skip
public long skip(long count) throws KryoException
Discards the specified number of bytes.- Overrides:
skip
in classjava.io.InputStream
- Throws:
KryoException
-
close
public void close() throws KryoException
Closes the underlying InputStream, if any.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
- Throws:
KryoException
-
readByte
public byte readByte() throws KryoException
Reads a single byte.- Throws:
KryoException
-
readByteUnsigned
public int readByteUnsigned() throws KryoException
Reads a byte as an int from 0 to 255.- Throws:
KryoException
-
readBytes
public byte[] readBytes(int length) throws KryoException
Reads the specified number of bytes into a new byte[].- Throws:
KryoException
-
readBytes
public void readBytes(byte[] bytes) throws KryoException
Reads bytes.length bytes and writes them to the specified byte[], starting at index 0.- Throws:
KryoException
-
readBytes
public void readBytes(byte[] bytes, int offset, int count) throws KryoException
Reads count bytes and writes them to the specified byte[], starting at offset.- Throws:
KryoException
-
readInt
public int readInt() throws KryoException
Reads a 4 byte int.- Throws:
KryoException
-
readInt
public int readInt(boolean optimizePositive) throws KryoException
Reads a 1-5 byte int.- Throws:
KryoException
-
canReadInt
public boolean canReadInt() throws KryoException
Returns true if enough bytes are available to read an int withreadInt(boolean)
.- Throws:
KryoException
-
canReadLong
public boolean canReadLong() throws KryoException
Returns true if enough bytes are available to read a long withreadLong(boolean)
.- Throws:
KryoException
-
readString
public java.lang.String readString()
Reads the length and string of UTF8 characters, or null. This can read strings written byOutput.writeString(String)
,Output.writeString(CharSequence)
, andOutput.writeAscii(String)
.- Returns:
- May be null.
-
readStringBuilder
public java.lang.StringBuilder readStringBuilder()
Reads the length and string of UTF8 characters, or null. This can read strings written byOutput.writeString(String)
,Output.writeString(CharSequence)
, andOutput.writeAscii(String)
.- Returns:
- May be null.
-
readFloat
public float readFloat() throws KryoException
Reads a 4 byte float.- Throws:
KryoException
-
readFloat
public float readFloat(float precision, boolean optimizePositive) throws KryoException
Reads a 1-5 byte float with reduced precision.- Throws:
KryoException
-
readShort
public short readShort() throws KryoException
Reads a 2 byte short.- Throws:
KryoException
-
readShortUnsigned
public int readShortUnsigned() throws KryoException
Reads a 2 byte short as an int from 0 to 65535.- Throws:
KryoException
-
readLong
public long readLong() throws KryoException
Reads an 8 byte long.- Throws:
KryoException
-
readLong
public long readLong(boolean optimizePositive) throws KryoException
Reads a 1-9 byte long.- Throws:
KryoException
-
readBoolean
public boolean readBoolean() throws KryoException
Reads a 1 byte boolean.- Throws:
KryoException
-
readChar
public char readChar() throws KryoException
Reads a 2 byte char.- Throws:
KryoException
-
readDouble
public double readDouble() throws KryoException
Reads an 8 bytes double.- Throws:
KryoException
-
readDouble
public double readDouble(double precision, boolean optimizePositive) throws KryoException
Reads a 1-9 byte double with reduced precision.- Throws:
KryoException
-
-