Module java.base
Package java.io

Class DataInputStream

所有已实现的接口:
Closeable, DataInput, AutoCloseable

public class DataInputStream extends FilterInputStream implements DataInput
数据输入流允许应用以与机器无关的方式从底层输入流中读取基本的Java数据类型。应用程序使用数据输出流来写入数据,稍后可以由数据输入流读取。

DataInputStream不适合多个并发线程使用。如果要由多个线程使用DataInputStream,则应通过适当的同步来控制对数据输入流的访问。

自:
1.0
参见:
  • Field Summary

    Fields declared in class java.io.FilterInputStream

    in
  • Constructor Summary

    Constructors
    Constructor
    Description
    创建一个使用指定底层InputStream的DataInputStream。
  • Method Summary

    Modifier and Type
    Method
    Description
    final int
    read(byte[] b)
    从包含的输入流中读取一些字节并将它们存储到缓冲区数组 b 中。
    final int
    read(byte[] b, int off, int len)
    从包含的输入流中最多读取 len 字节的数据到字节数组中。
    final boolean
    查看DataInputreadBoolean方法的一般约定。
    final byte
    查看DataInputreadByte方法的一般约定。
    final char
    查看DataInputreadChar方法的一般约定。
    final double
    查看DataInputreadDouble方法的一般约定。
    final float
    查看DataInputreadFloat方法的一般约定。
    final void
    readFully(byte[] b)
    查看DataInputreadFully方法的一般约定。
    final void
    readFully(byte[] b, int off, int len)
    查看DataInputreadFully方法的一般约定。
    final int
    查看DataInputreadInt方法的一般约定。
    final String
    已弃用。
    此方法未正确将字节转换为字符。
    final long
    查看DataInputreadLong方法的一般约定。
    final short
    查看DataInputreadShort方法的一般约定。
    final int
    查看DataInputreadUnsignedByte方法的一般约定。
    final int
    查看DataInputreadUnsignedShort方法的一般约定。
    final String
    查看DataInputreadUTF方法的一般约定。
    static final String
    从流in中读取以modified UTF-8格式编码的Unicode字符字符串的表示形式;然后将这些字符作为String返回。
    final int
    skipBytes(int n)
    查看DataInputskipBytes方法的一般约定。

    Methods declared in class java.io.FilterInputStream

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

    Methods declared in class java.lang.Object

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

    • DataInputStream

      public DataInputStream(InputStream in)
      创建一个使用指定底层InputStream的DataInputStream。
      参数:
      in - 指定的输入流
  • Method Details

    • read

      public final int read(byte[] b) throws IOException
      从包含的输入流中读取一些字节并将它们存储到缓冲区数组 b 中。实际读取的字节数作为整数返回。此方法会阻塞,直到有输入数据可用,检测到文件结束,或抛出异常。

      如果 b 为null,则会抛出NullPointerException。如果 b 的长度为零,则不会读取任何字节,并返回0;否则,将尝试读取至少一个字节。如果没有字节可用,因为流已到达文件末尾,则返回值为-1;否则,将读取至少一个字节并存储到 b 中。

      第一个读取的字节存储在元素 b[0] 中,下一个字节存储在 b[1] 中,依此类推。读取的字节数最多等于 b 的长度。设 k 为实际读取的字节数;这些字节将存储在元素 b[0] b[k-1] 中,使元素 b[k] b[b.length-1] 不受影响。

      read(b)方法的效果与以下相同:

       read(b, 0, b.length)
       
      覆盖:
      read 在类中 FilterInputStream
      参数:
      b - 读取数据的缓冲区。
      返回:
      读入缓冲区的总字节数,如果没有更多数据,因为已到达流的末尾,则返回-1
      抛出:
      IOException - 如果由于除文件结束之外的任何原因无法读取第一个字节,流已关闭且底层输入流不支持关闭后读取,或发生其他I/O错误。
      参见:
    • read

      public final int read(byte[] b, int off, int len) throws IOException
      从包含的输入流中最多读取 len 字节的数据到字节数组中。尝试读取尽可能多的 len 字节,但可能读取的数量较少,甚至为零。实际读取的字节数作为整数返回。

      此方法会阻塞,直到有输入数据可用,检测到文件结束,或抛出异常。

      如果 len 为零,则不会读取任何字节,并返回0;否则,将尝试读取至少一个字节。如果没有字节可用,因为流已到达文件末尾,则返回值为-1;否则,将读取至少一个字节并存储到 b 中。

      第一个读取的字节存储在元素 b[off] 中,下一个字节存储在 b[off+1] 中,依此类推。读取的字节数最多等于 len 。设k为实际读取的字节数;这些字节将存储在元素 b[off] b[off+k-1] 中,使元素 b[off+k] b[off+len-1] 不受影响。

      在每种情况下,元素 b[0] b[off] 和元素 b[off+len] b[b.length-1] 不受影响。

      覆盖:
      read 在类中 FilterInputStream
      参数:
      b - 读取数据的缓冲区。
      off - 目标数组 b 中的起始偏移量。
      len - 最大读取的字节数。
      返回:
      读入缓冲区的总字节数,如果没有更多数据,因为已到达流的末尾,则返回-1
      抛出:
      NullPointerException - 如果 b null
      IndexOutOfBoundsException - 如果off为负数,len为负数,或len大于b.length - off
      IOException - 如果由于除文件结束之外的任何原因无法读取第一个字节,流已关闭且底层输入流不支持关闭后读取,或发生其他I/O错误。
      参见:
    • readFully

      public final void readFully(byte[] b) throws IOException
      查看DataInputreadFully方法的一般约定。

      此操作的字节从包含的输入流中读取。

      指定者:
      readFully 在接口中 DataInput
      参数:
      b - 读取数据的缓冲区。
      抛出:
      NullPointerException - 如果bnull
      EOFException - 如果此输入流在读取所有字节之前到达结尾。
      IOException - 流已关闭且包含的输入流不支持关闭后读取,或发生其他I/O错误。
      参见:
    • readFully

      public final void readFully(byte[] b, int off, int len) throws IOException
      查看DataInputreadFully方法的一般约定。

      此操作的字节从包含的输入流中读取。

      指定者:
      readFully 在接口 DataInput
      参数:
      b - 读取数据的缓冲区。
      off - 数据数组b中的起始偏移量。
      len - 要读取的字节数。
      抛出:
      NullPointerException - 如果bnull
      IndexOutOfBoundsException - 如果off为负数,len为负数,或len大于b.length - off
      EOFException - 如果此输入流在读取所有字节之前到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • skipBytes

      public final int skipBytes(int n) throws IOException
      查看DataInputskipBytes方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      skipBytes 在接口 DataInput
      参数:
      n - 要跳过的字节数。
      返回:
      实际跳过的字节数。
      抛出:
      IOException - 如果包含的输入流不支持寻址,或流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
    • readBoolean

      public final boolean readBoolean() throws IOException
      查看DataInputreadBoolean方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readBoolean 在接口 DataInput
      返回:
      读取的boolean值。
      抛出:
      EOFException - 如果此输入流已到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readByte

      public final byte readByte() throws IOException
      查看DataInputreadByte方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readByte 在接口 DataInput
      返回:
      作为有符号8位byte的此输入流的下一个字节。
      抛出:
      EOFException - 如果此输入流已到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readUnsignedByte

      public final int readUnsignedByte() throws IOException
      查看DataInputreadUnsignedByte方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readUnsignedByte 在接口 DataInput
      返回:
      此输入流的下一个字节,解释为无符号8位数字。
      抛出:
      EOFException - 如果此输入流已到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readShort

      public final short readShort() throws IOException
      查看DataInputreadShort方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readShort 在接口 DataInput
      返回:
      此输入流的下两个字节,解释为有符号16位数字。
      抛出:
      EOFException - 如果在读取两个字节之前此输入流到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readUnsignedShort

      public final int readUnsignedShort() throws IOException
      查看DataInputreadUnsignedShort方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readUnsignedShort 在接口 DataInput
      返回:
      此输入流的下两个字节,解释为无符号16位整数。
      抛出:
      EOFException - 如果在读取两个字节之前此输入流到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readChar

      public final char readChar() throws IOException
      查看DataInputreadChar方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readChar 在接口 DataInput
      返回:
      此输入流的下两个字节,解释为char
      抛出:
      EOFException - 如果在读取两个字节之前此输入流到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readInt

      public final int readInt() throws IOException
      查看DataInputreadInt方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readInt 在接口 DataInput
      返回:
      此输入流的下四个字节,解释为int
      抛出:
      EOFException - 如果在读取四个字节之前此输入流到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readLong

      public final long readLong() throws IOException
      查看DataInputreadLong方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readLong 在接口 DataInput
      返回:
      此输入流的下八个字节,解释为long
      抛出:
      EOFException - 如果在读取八个字节之前此输入流到达末尾。
      IOException - 流已关闭且包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readFloat

      public final float readFloat() throws IOException
      查看DataInputreadFloat方法的一般约定。

      此操作的字节是从包含的输入流中读取的。

      指定者:
      readFloat 在接口 DataInput
      返回值:
      从输入流中解释为float的下一个四个字节。
      抛出:
      EOFException - 如果在读取四个字节之前,此输入流到达末尾。
      IOException - 流已关闭,包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readDouble

      public final double readDouble() throws IOException
      查看DataInputreadDouble方法的一般约定。

      此操作的字节从包含的输入流中读取。

      指定者:
      readDouble 在接口 DataInput
      返回值:
      从输入流中解释为double的下一个八个字节。
      抛出:
      EOFException - 如果在读取八个字节之前,此输入流到达末尾。
      IOException - 流已关闭,包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      参见:
    • readLine

      @Deprecated public final String readLine() throws IOException
      Deprecated.
      This method does not properly convert bytes to characters. As of JDK 1.1, the preferred way to read lines of text is via the BufferedReader.readLine() method. Programs that use the DataInputStream class to read lines can be converted to use the BufferedReader class by replacing code of the form:
           DataInputStream d = new DataInputStream(in);
       
      with:
           BufferedReader d
                = new BufferedReader(new InputStreamReader(in));
       
      查看DataInputreadLine方法的一般约定。

      此操作的字节从包含的输入流中读取。

      指定者:
      readLine 在接口 DataInput
      返回值:
      从输入流中读取的下一行文本。
      抛出:
      IOException - 如果发生I/O错误。
      参见:
    • readUTF

      public final String readUTF() throws IOException
      查看DataInputreadUTF方法的一般约定。

      此操作的字节从包含的输入流中读取。

      指定者:
      readUTF 在接口 DataInput
      返回值:
      一个Unicode字符串。
      抛出:
      EOFException - 如果在读取所有字节之前,此输入流到达末尾。
      IOException - 流已关闭,包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      UTFDataFormatException - 如果字节不表示字符串的有效修改UTF-8编码。
      参见:
    • readUTF

      public static final String readUTF(DataInput in) throws IOException
      从流in中读取一个使用修改后的UTF-8格式编码的Unicode字符字符串的表示形式;然后将这个字符字符串作为String返回。修改后的UTF-8表示的细节与DataInputreadUTF方法完全相同。
      参数:
      in - 数据输入流。
      返回值:
      一个Unicode字符串。
      抛出:
      EOFException - 如果输入流在所有字节之前到达末尾。
      IOException - 流已关闭,包含的输入流不支持关闭后继续读取,或发生其他I/O错误。
      UTFDataFormatException - 如果字节不表示Unicode字符串的有效修改UTF-8编码。
      参见: