# Class DataInputStream

java.lang.Object
java.io.InputStream
java.io.DataInputStream

All Implemented Interfaces:
  `DataInput, AutoCloseable`

public class DataInputStream extends InputStream implements DataInput
A data input stream lets an application read primitive Java data types from an underlying input stream in a machine-independent way. An application uses a data output stream to write data that can later be read by a data input stream. Since: JDK1.0, CLDC 1.0 See Also:DataOutputStream

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected InputStream`
  `in`
  The input stream.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DataInputStream(InputStream in)`
  Creates a DataInputStream and saves its argument, the input stream in, for later use.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `available()`
  Returns the number of bytes that can be read from this input stream without blocking.
  `void`
  `close()`
  Closes this input stream and releases any system resources associated with the stream.
  `void`
  `mark(int readlimit)`
  Marks the current position in this input stream.
  `boolean`
  `markSupported()`
  Tests if this input stream supports the mark and reset methods.
  `int`
  `read()`
  Reads the next byte of data from this input stream.
  `final int`
  `read(byte[] b)`
  See the general contract of the read method of DataInput.
  `final int`
  `read(byte[] b, int off, int len)`
  Reads up to len bytes of data from this input stream into an array of bytes.
  `final boolean`
  `readBoolean()`
  See the general contract of the readBoolean method of DataInput.
  `final byte`
  `readByte()`
  See the general contract of the readByte method of DataInput.
  `final char`
  `readChar()`
  See the general contract of the readChar method of DataInput.
  `final double`
  `readDouble()`
  See the general contract of the readDouble method of DataInput.
  `final float`
  `readFloat()`
  See the general contract of the readFloat method of DataInput.
  `final void`
  `readFully(byte[] b)`
  See the general contract of the readFully method of DataInput.
  `final void`
  `readFully(byte[] b, int off, int len)`
  See the general contract of the readFully method of DataInput.
  `final int`
  `readInt()`
  See the general contract of the readInt method of DataInput.
  `final long`
  `readLong()`
  See the general contract of the readLong method of DataInput.
  `final short`
  `readShort()`
  See the general contract of the readShort method of DataInput.
  `final int`
  `readUnsignedByte()`
  See the general contract of the readUnsignedByte method of DataInput.
  `final int`
  `readUnsignedShort()`
  See the general contract of the readUnsignedShort method of DataInput.
  `final String`
  `readUTF()`
  See the general contract of the readUTF method of DataInput.
  `static final String`
  `readUTF(DataInput in)`
  Reads from the stream in a representation of a Unicode character string encoded in Java modified UTF-8 format; this string of characters is then returned as a String.
  `void`
  `reset()`
  Repositions this stream to the position at the time the mark method was last called on this input stream.
  `long`
  `skip(long n)`
  Skips over and discards n bytes of data from the input stream.
  `final int`
  `skipBytes(int n)`
  See the general contract of the skipBytes method of DataInput.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### in

    protected InputStream in
    The input stream.

- ## Constructor Details

  - ### DataInputStream

    public DataInputStream(InputStream in)
    Creates a DataInputStream and saves its argument, the input stream in, for later use. in - the input stream.

- ## Method Details

  - ### available

    public int available() throws IOException
    Returns the number of bytes that can be read from this input stream without blocking. This method simply performs in.available() and returns the result.
    Overrides:
      `available` in class `InputStream`
    Throws:
      `IOException`

  - ### close

    public void close() throws IOException
    Closes this input stream and releases any system resources associated with the stream. This method simply performs in.close().
    Specified by:
      `close` in interface `AutoCloseable`
    Overrides:
      `close` in class `InputStream`
    Throws:
      `IOException`

  - ### mark

    public void mark(int readlimit)
    Marks the current position in this input stream. A subsequent call to the reset method repositions this stream at the last marked position so that subsequent reads re-read the same bytes. The readlimit argument tells this input stream to allow that many bytes to be read before the mark position gets invalidated. This method simply performs in.mark(readlimit).
    Overrides:
      `mark` in class `InputStream`

  - ### markSupported

    public boolean markSupported()
    Tests if this input stream supports the mark and reset methods. This method simply performs in.markSupported().
    Overrides:
      `markSupported` in class `InputStream`

  - ### read

    public int read() throws IOException
    Reads the next byte of data from this input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown. This method simply performs in.read() and returns the result.
    Specified by:
      `read` in class `InputStream`
    Throws:
      `IOException`

  - ### read

    public final int read(byte[] b) throws IOException
    See the general contract of the read method of DataInput. Bytes for this operation are read from the contained input stream.
    Overrides:
      `read` in class `InputStream`
    Throws:
      `IOException`

  - ### read

    public final int read(byte[] b, int off, int len) throws IOException
    Reads up to len bytes of data from this input stream into an array of bytes. This method blocks until some input is available. This method simply performs in.read(b, off, len) and returns the result.
    Overrides:
      `read` in class `InputStream`
    Throws:
      `IOException`

  - ### readBoolean

    public final boolean readBoolean() throws IOException
    See the general contract of the readBoolean method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readBoolean` in interface `DataInput`
    Throws:
      `IOException`

  - ### readByte

    public final byte readByte() throws IOException
    See the general contract of the readByte method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readByte` in interface `DataInput`
    Throws:
      `IOException`

  - ### readChar

    public final char readChar() throws IOException
    See the general contract of the readChar method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readChar` in interface `DataInput`
    Throws:
      `IOException`

  - ### readDouble

    public final double readDouble() throws IOException
    See the general contract of the readDouble method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readDouble` in interface `DataInput`
    Throws:
      `IOException`

  - ### readFloat

    public final float readFloat() throws IOException
    See the general contract of the readFloat method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readFloat` in interface `DataInput`
    Throws:
      `IOException`

  - ### readFully

    public final void readFully(byte[] b) 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`
    Throws:
      `IOException`

  - ### readFully

    public final void readFully(byte[] b, int off, int len) 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`
    Throws:
      `IOException`

  - ### readInt

    public final int readInt() throws IOException
    See the general contract of the readInt method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readInt` in interface `DataInput`
    Throws:
      `IOException`

  - ### readLong

    public final long readLong() throws IOException
    See the general contract of the readLong method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readLong` in interface `DataInput`
    Throws:
      `IOException`

  - ### readShort

    public final short readShort() throws IOException
    See the general contract of the readShort method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readShort` in interface `DataInput`
    Throws:
      `IOException`

  - ### readUnsignedByte

    public final int readUnsignedByte() throws IOException
    See the general contract of the readUnsignedByte method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readUnsignedByte` in interface `DataInput`
    Throws:
      `IOException`

  - ### readUnsignedShort

    public final int readUnsignedShort() throws IOException
    See the general contract of the readUnsignedShort method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readUnsignedShort` in interface `DataInput`
    Throws:
      `IOException`

  - ### readUTF

    public final String readUTF() throws IOException
    See the general contract of the readUTF method of DataInput. Bytes for this operation are read from the contained input stream.
    Specified by:
      `readUTF` in interface `DataInput`
    Throws:
      `IOException`

  - ### readUTF

    public static final String readUTF(DataInput in) throws IOException
    Reads from the stream in a representation of a Unicode character string encoded in Java modified UTF-8 format; this string of characters is then returned as a String. The details of the modified UTF-8 representation are exactly the same as for the readUTF method of DataInput.
    Throws:
      `IOException`

  - ### reset

    public void reset() throws IOException
    Repositions this stream to the position at the time the mark method was last called on this input stream. This method simply performs in.reset(). Stream marks are intended to be used in situations where you need to read ahead a little to see what's in the stream. Often this is most easily done by invoking some general parser. If the stream is of the type handled by the parse, it just chugs along happily. If the stream is not of that type, the parser should toss an exception when it fails. If this happens within readlimit bytes, it allows the outer code to reset the stream and try another parser.
    Overrides:
      `reset` in class `InputStream`
    Throws:
      `IOException`

  - ### skip

    public long skip(long n) throws IOException
    Skips over and discards n bytes of data from the input stream. The skip method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly 0. The actual number of bytes skipped is returned. This method simply performs in.skip(n).
    Overrides:
      `skip` in class `InputStream`
    Throws:
      `IOException`

  - ### skipBytes

    public final int skipBytes(int n) 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`
    Throws:
      `IOException`