Package java.io

Interface DataInput

All Known Subinterfaces:
ObjectInput
All Known Implementing Classes:
DataInputStream, ObjectInputStream, RandomAccessFile

public interface DataInput
Defines an interface for classes that are able to read big-endian typed data from some source. Typically, this data has been written by a class which implements DataOutput. Types that can be read include byte, 16-bit short, 32-bit int, 32-bit float, 64-bit long, 64-bit double, byte strings, and MUTF-8 strings.

MUTF-8 (Modified UTF-8) Encoding

When encoding strings as UTF, implementations of DataInput and DataOutput use a slightly modified form of UTF-8, hereafter referred to as MUTF-8. This form is identical to standard UTF-8, except:

  • Only the one-, two-, and three-byte encodings are used.
  • Code points in the range U+10000U+10ffff are encoded as a surrogate pair, each of which is represented as a three-byte encoded value.
  • The code point U+0000 is encoded in two-byte form.

Please refer to The Unicode Standard for further information about character encoding. MUTF-8 is actually closer to the (relatively less well-known) encoding CESU-8 than to UTF-8 per se.

See Also:
DataInputStream, RandomAccessFile
  • Method Summary

    Modifier and Type Method Description
    boolean readBoolean()
    Reads a boolean.
    byte readByte()
    Reads an 8-bit byte value.
    char readChar()
    Reads a big-endian 16-bit character value.
    double readDouble()
    Reads a big-endian 64-bit double value.
    float readFloat()
    Reads a big-endian 32-bit float value.
    void readFully​(byte[] dst)
    Equivalent to readFully(dst, 0, dst.length);.
    void readFully​(byte[] dst, int offset, int byteCount)
    Reads byteCount bytes from this stream and stores them in the byte array dst starting at offset.
    int readInt()
    Reads a big-endian 32-bit integer value.
    String readLine()
    Returns a string containing the next line of text available from this stream.
    long readLong()
    Reads a big-endian 64-bit long value.
    short readShort()
    Reads a big-endian 16-bit short value.
    int readUnsignedByte()
    Reads an unsigned 8-bit byte value and returns it as an int.
    int readUnsignedShort()
    Reads a big-endian 16-bit unsigned short value and returns it as an int.
    String readUTF()
    Reads a string encoded with modified UTF-8.
    int skipBytes​(int count)
    Skips count number of bytes.
  • Method Details

    • readBoolean

      boolean readBoolean() throws IOException
      Reads a boolean.
      Returns:
      the next boolean value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeBoolean(boolean)
    • readByte

      byte readByte() throws IOException
      Reads an 8-bit byte value.
      Returns:
      the next byte value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeByte(int)
    • readChar

      char readChar() throws IOException
      Reads a big-endian 16-bit character value.
      Returns:
      the next char value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeChar(int)
    • readDouble

      double readDouble() throws IOException
      Reads a big-endian 64-bit double value.
      Returns:
      the next double value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeDouble(double)
    • readFloat

      float readFloat() throws IOException
      Reads a big-endian 32-bit float value.
      Returns:
      the next float value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeFloat(float)
    • readFully

      void readFully​(byte[] dst) throws IOException
      Equivalent to readFully(dst, 0, dst.length);.
      Throws:
      IOException
    • readFully

      void readFully​(byte[] dst, int offset, int byteCount) throws IOException
      Reads byteCount bytes from this stream and stores them in the byte array dst starting at offset. If byteCount is zero, then this method returns without reading any bytes. Otherwise, this method blocks until byteCount bytes have been read. If insufficient bytes are available, EOFException is thrown. If an I/O error occurs, IOException is thrown. When an exception is thrown, some bytes may have been consumed from the stream and written into the array.
      Parameters:
      dst - the byte array into which the data is read.
      offset - the offset in dst at which to store the bytes.
      byteCount - the number of bytes to read.
      Throws:
      EOFException - if the end of the source stream is reached before enough bytes have been read.
      IndexOutOfBoundsException - if offset < 0 or byteCount < 0, or offset + byteCount > dst.length.
      IOException - if a problem occurs while reading from this stream.
      NullPointerException - if dst is null.
    • readInt

      int readInt() throws IOException
      Reads a big-endian 32-bit integer value.
      Returns:
      the next int value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeInt(int)
    • readLine

      String readLine() throws IOException
      Returns a string containing the next line of text available from this stream. A line is made of zero or more characters followed by '\n', '\r', "\r\n" or the end of the stream. The string does not include the newline sequence.
      Returns:
      the contents of the line or null if no characters have been read before the end of the stream.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
    • readLong

      long readLong() throws IOException
      Reads a big-endian 64-bit long value.
      Returns:
      the next long value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeLong(long)
    • readShort

      short readShort() throws IOException
      Reads a big-endian 16-bit short value.
      Returns:
      the next short value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeShort(int)
    • readUnsignedByte

      int readUnsignedByte() throws IOException
      Reads an unsigned 8-bit byte value and returns it as an int.
      Returns:
      the next unsigned byte value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeByte(int)
    • readUnsignedShort

      int readUnsignedShort() throws IOException
      Reads a big-endian 16-bit unsigned short value and returns it as an int.
      Returns:
      the next unsigned short value.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeShort(int)
    • readUTF

      String readUTF() throws IOException
      Reads a string encoded with modified UTF-8.
      Returns:
      the next string encoded with modified UTF-8.
      Throws:
      EOFException - if the end of the input is reached before the read request can be satisfied.
      IOException - if an I/O error occurs while reading.
      See Also:
      DataOutput.writeUTF(java.lang.String)
    • skipBytes

      int skipBytes​(int count) throws IOException
      Skips count number of bytes. This method will not throw an EOFException if the end of the input is reached before count bytes where skipped.
      Parameters:
      count - the number of bytes to skip.
      Returns:
      the number of bytes actually skipped.
      Throws:
      IOException - if a problem occurs during skipping.