Package org.wololo.flatgeobuf
Class LittleEndianDataInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- org.wololo.flatgeobuf.LittleEndianDataInputStream
-
- All Implemented Interfaces:
Closeable
,DataInput
,AutoCloseable
public class LittleEndianDataInputStream extends FilterInputStream implements DataInput
A little endian input stream reads two's complement, little endian integers, floating point numbers, and characters and returns them as Java primitive types.The standard
java.io.DataInputStream
class which this class imitates reads big endian quantities.Warning: The
DataInput
andDataOutput
interfaces specifies big endian byte order in their documentation. This means that this class is, strictly speaking, not a proper implementation. However, I don't see a reason for the these interfaces to specify the byte order of their underlying representations.- Version:
- 2
- Author:
- Elliotte Rusty Harold, Harald Kuhr
- See Also:
com.twelvemonkeys.io.LittleEndianRandomAccessFile
,DataInputStream
,DataInput
,DataOutput
-
-
Field Summary
-
Fields inherited from class java.io.FilterInputStream
in
-
-
Constructor Summary
Constructors Constructor Description LittleEndianDataInputStream(InputStream pStream)
Creates a new little endian input stream and chains it to the input stream specified by thepStream
argument.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
readBoolean()
Reads aboolean
from the underlying input stream by reading a single byte.byte
readByte()
Reads a signedbyte
from the underlying input stream with value between -128 and 127char
readChar()
Reads a two byte Unicodechar
from the underlying input stream in little endian order, low byte first.double
readDouble()
float
readFloat()
void
readFully(byte[] pBytes)
See the general contract of thereadFully
method ofDataInput
.void
readFully(byte[] pBytes, int pOffset, int pLength)
See the general contract of thereadFully
method ofDataInput
.int
readInt()
Reads a four byte signedint
from the underlying input stream in little endian order, low byte first.String
readLine()
Deprecated.This method does not properly convert bytes to characters.long
readLong()
Reads an eight byte signedint
from the underlying input stream in little endian order, low byte first.short
readShort()
Reads a two byte signedshort
from the underlying input stream in little endian order, low byte first.int
readUnsignedByte()
Reads an unsignedbyte
from the underlying input stream with value between 0 and 255int
readUnsignedShort()
Reads a two byte unsignedshort
from the underlying input stream in little endian order, low byte first.String
readUTF()
Reads a string of no more than 65,535 characters from the underlying input stream using UTF-8 encoding.int
skipBytes(int pLength)
See the general contract of theskipBytes
method ofDataInput
.-
Methods inherited from class java.io.FilterInputStream
available, close, mark, markSupported, read, read, read, reset, skip
-
Methods inherited from class java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
Constructor Detail
-
LittleEndianDataInputStream
public LittleEndianDataInputStream(InputStream pStream)
Creates a new little endian input stream and chains it to the input stream specified by thepStream
argument.- Parameters:
pStream
- the underlying input stream.- See Also:
FilterInputStream.in
-
-
Method Detail
-
readBoolean
public boolean readBoolean() throws IOException
Reads aboolean
from the underlying input stream by reading a single byte. If the byte is zero, false is returned. If the byte is positive, true is returned.- Specified by:
readBoolean
in interfaceDataInput
- Returns:
- the
boolean
value read. - Throws:
EOFException
- if the end of the underlying input stream has been reachedIOException
- if the underlying stream throws an IOException.
-
readByte
public byte readByte() throws IOException
Reads a signedbyte
from the underlying input stream with value between -128 and 127- Specified by:
readByte
in interfaceDataInput
- Returns:
- the
byte
value read. - Throws:
EOFException
- if the end of the underlying input stream has been reachedIOException
- if the underlying stream throws an IOException.
-
readUnsignedByte
public int readUnsignedByte() throws IOException
Reads an unsignedbyte
from the underlying input stream with value between 0 and 255- Specified by:
readUnsignedByte
in interfaceDataInput
- Returns:
- the
byte
value read. - Throws:
EOFException
- if the end of the underlying input stream has been reachedIOException
- if the underlying stream throws an IOException.
-
readShort
public short readShort() throws IOException
Reads a two byte signedshort
from the underlying input stream in little endian order, low byte first.- Specified by:
readShort
in interfaceDataInput
- Returns:
- the
short
read. - Throws:
EOFException
- if the end of the underlying input stream has been reachedIOException
- if the underlying stream throws an IOException.
-
readUnsignedShort
public int readUnsignedShort() throws IOException
Reads a two byte unsignedshort
from the underlying input stream in little endian order, low byte first.- Specified by:
readUnsignedShort
in interfaceDataInput
- Returns:
- the int value of the unsigned short read.
- Throws:
EOFException
- if the end of the underlying input stream has been reachedIOException
- if the underlying stream throws an IOException.
-
readChar
public char readChar() throws IOException
Reads a two byte Unicodechar
from the underlying input stream in little endian order, low byte first.- Specified by:
readChar
in interfaceDataInput
- Returns:
- the int value of the unsigned short read.
- Throws:
EOFException
- if the end of the underlying input stream has been reachedIOException
- if the underlying stream throws an IOException.
-
readInt
public int readInt() throws IOException
Reads a four byte signedint
from the underlying input stream in little endian order, low byte first.- Specified by:
readInt
in interfaceDataInput
- Returns:
- the
int
read. - Throws:
EOFException
- if the end of the underlying input stream has been reachedIOException
- if the underlying stream throws an IOException.
-
readLong
public long readLong() throws IOException
Reads an eight byte signedint
from the underlying input stream in little endian order, low byte first.- Specified by:
readLong
in interfaceDataInput
- Returns:
- the
int
read. - Throws:
EOFException
- if the end of the underlying input stream has been reachedIOException
- if the underlying stream throws an IOException.
-
readUTF
public String readUTF() throws IOException
Reads a string of no more than 65,535 characters from the underlying input stream using UTF-8 encoding. This method first reads a two byte short in big endian order as required by the UTF-8 specification. This gives the number of bytes in the UTF-8 encoded version of the string. Next this many bytes are read and decoded as UTF-8 encoded characters.- Specified by:
readUTF
in interfaceDataInput
- Returns:
- the decoded string
- Throws:
UTFDataFormatException
- if the string cannot be decodedIOException
- if the underlying stream throws an IOException.
-
readDouble
public final double readDouble() throws IOException
- Specified by:
readDouble
in interfaceDataInput
- Returns:
- the next eight bytes of this input stream, interpreted as a
little endian
double
. - Throws:
EOFException
- if end of stream occurs before eight bytes have been read.IOException
- if an I/O error occurs.
-
readFloat
public final float readFloat() throws IOException
- Specified by:
readFloat
in interfaceDataInput
- Returns:
- the next four bytes of this input stream, interpreted as a
little endian
int
. - Throws:
EOFException
- if end of stream occurs before four bytes have been read.IOException
- if an I/O error occurs.
-
skipBytes
public final int skipBytes(int pLength) throws IOException
See the general contract of theskipBytes
method ofDataInput
.Bytes for this operation are read from the contained input stream.
- Specified by:
skipBytes
in interfaceDataInput
- Parameters:
pLength
- the number of bytes to be skipped.- Returns:
- the actual number of bytes skipped.
- Throws:
IOException
- if an I/O error occurs.
-
readFully
public final void readFully(byte[] pBytes) throws IOException
See the general contract of thereadFully
method ofDataInput
.Bytes for this operation are read from the contained input stream.
- Specified by:
readFully
in interfaceDataInput
- Parameters:
pBytes
- the buffer into which the data is read.- Throws:
EOFException
- if this input stream reaches the end before reading all the bytes.IOException
- if an I/O error occurs.- See Also:
FilterInputStream.in
-
readFully
public final void readFully(byte[] pBytes, int pOffset, int pLength) throws IOException
See the general contract of thereadFully
method ofDataInput
.Bytes for this operation are read from the contained input stream.
- Specified by:
readFully
in interfaceDataInput
- Parameters:
pBytes
- the buffer into which the data is read.pOffset
- the start offset of the data.pLength
- the number of bytes to read.- Throws:
EOFException
- if this input stream reaches the end before reading all the bytes.IOException
- if an I/O error occurs.- See Also:
FilterInputStream.in
-
readLine
@Deprecated public String readLine() throws IOException
Deprecated.This method does not properly convert bytes to characters.See the general contract of thereadLine
method ofDataInput
.Bytes for this operation are read from the contained input stream.
- Specified by:
readLine
in interfaceDataInput
- Returns:
- the next line of text from this input stream.
- Throws:
IOException
- if an I/O error occurs.- See Also:
BufferedReader.readLine()
,DataInputStream.readLine()
-
-