Class LittleEndianDataInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
com.twelvemonkeys.io.LittleEndianDataInputStream
All Implemented Interfaces:
Closeable, DataInput, AutoCloseable
Direct Known Subclasses:
CompoundDocument.SeekableLittleEndianDataInputStream

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
See Also:
  • Field Summary

    Fields inherited from class java.io.FilterInputStream

    in
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a new little endian input stream and chains it to the input stream specified by the pStream argument.
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
    Reads a boolean from the underlying input stream by reading a single byte.
    byte
    Reads a signed byte from the underlying input stream with value between -128 and 127
    char
    Reads a two byte Unicode char from the underlying input stream in little endian order, low byte first.
    final double
     
    final float
     
    final void
    readFully(byte[] pBytes)
    See the general contract of the readFully method of DataInput.
    final void
    readFully(byte[] pBytes, int pOffset, int pLength)
    See the general contract of the readFully method of DataInput.
    int
    Reads a four byte signed int from the underlying input stream in little endian order, low byte first.
    Deprecated.
    This method does not properly convert bytes to characters.
    long
    Reads an eight byte signed int from the underlying input stream in little endian order, low byte first.
    short
    Reads a two byte signed short from the underlying input stream in little endian order, low byte first.
    int
    Reads an unsigned byte from the underlying input stream with value between 0 and 255
    int
    Reads a two byte unsigned short from the underlying input stream in little endian order, low byte first.
    Reads a string of no more than 65,535 characters from the underlying input stream using UTF-8 encoding.
    final int
    skipBytes(int pLength)
    See the general contract of the skipBytes method of DataInput.

    Methods inherited from class java.io.FilterInputStream

    available, close, mark, markSupported, read, read, read, reset, skip

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • 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:
  • Method Details

    • 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:
    • 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:
    • readLine

      @Deprecated public String readLine() throws IOException
      Deprecated.
      This method does not properly convert bytes to characters.
      See the general contract of the readLine method of DataInput.

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

      Specified by:
      readLine in interface DataInput
      Returns:
      the next line of text from this input stream.
      Throws:
      IOException - if an I/O error occurs.
      See Also: