Class 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 and DataOutput 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
    • Constructor Detail

      • LittleEndianDataInputStream

        public LittleEndianDataInputStream​(InputStream pStream)
        Creates a new little endian input stream and chains it to the input stream specified by the pStream argument.
        Parameters:
        pStream - the underlying input stream.
        See Also:
        FilterInputStream.in
    • Method Detail

      • readBoolean

        public boolean readBoolean()
                            throws IOException
        Reads a boolean 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 interface DataInput
        Returns:
        the boolean value read.
        Throws:
        EOFException - if the end of the underlying input stream has been reached
        IOException - if the underlying stream throws an IOException.
      • readByte

        public byte readByte()
                      throws IOException
        Reads a signed byte from the underlying input stream with value between -128 and 127
        Specified by:
        readByte in interface DataInput
        Returns:
        the byte value read.
        Throws:
        EOFException - if the end of the underlying input stream has been reached
        IOException - if the underlying stream throws an IOException.
      • readUnsignedByte

        public int readUnsignedByte()
                             throws IOException
        Reads an unsigned byte from the underlying input stream with value between 0 and 255
        Specified by:
        readUnsignedByte in interface DataInput
        Returns:
        the byte value read.
        Throws:
        EOFException - if the end of the underlying input stream has been reached
        IOException - if the underlying stream throws an IOException.
      • readShort

        public short readShort()
                        throws IOException
        Reads a two byte signed short from the underlying input stream in little endian order, low byte first.
        Specified by:
        readShort in interface DataInput
        Returns:
        the short read.
        Throws:
        EOFException - if the end of the underlying input stream has been reached
        IOException - if the underlying stream throws an IOException.
      • readUnsignedShort

        public int readUnsignedShort()
                              throws IOException
        Reads a two byte unsigned short from the underlying input stream in little endian order, low byte first.
        Specified by:
        readUnsignedShort in interface DataInput
        Returns:
        the int value of the unsigned short read.
        Throws:
        EOFException - if the end of the underlying input stream has been reached
        IOException - if the underlying stream throws an IOException.
      • readChar

        public char readChar()
                      throws IOException
        Reads a two byte Unicode char from the underlying input stream in little endian order, low byte first.
        Specified by:
        readChar in interface DataInput
        Returns:
        the int value of the unsigned short read.
        Throws:
        EOFException - if the end of the underlying input stream has been reached
        IOException - if the underlying stream throws an IOException.
      • readInt

        public int readInt()
                    throws IOException
        Reads a four byte signed int from the underlying input stream in little endian order, low byte first.
        Specified by:
        readInt in interface DataInput
        Returns:
        the int read.
        Throws:
        EOFException - if the end of the underlying input stream has been reached
        IOException - if the underlying stream throws an IOException.
      • readLong

        public long readLong()
                      throws IOException
        Reads an eight byte signed int from the underlying input stream in little endian order, low byte first.
        Specified by:
        readLong in interface DataInput
        Returns:
        the int read.
        Throws:
        EOFException - if the end of the underlying input stream has been reached
        IOException - 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 interface DataInput
        Returns:
        the decoded string
        Throws:
        UTFDataFormatException - if the string cannot be decoded
        IOException - if the underlying stream throws an IOException.
      • readDouble

        public final double readDouble()
                                throws IOException
        Specified by:
        readDouble in interface DataInput
        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 interface DataInput
        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 the skipBytes method of DataInput.

        Bytes for this operation are read from the contained input stream.

        Specified by:
        skipBytes in interface DataInput
        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 the readFully method of DataInput.

        Bytes for this operation are read from the contained input stream.

        Specified by:
        readFully in interface DataInput
        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 the readFully method of DataInput.

        Bytes for this operation are read from the contained input stream.

        Specified by:
        readFully in interface DataInput
        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