Module  java.base
软件包  java.io

Class DataInputStream

  • All Implemented Interfaces:
    CloseableDataInputAutoCloseable


    public class DataInputStream
    extends FilterInputStream
    implements DataInput
    数据输入流允许应用程序以独立于机器的方式从基础输入流读取原始Java数据类型。 应用程序使用数据输出流来写入稍后可以被数据输入流读取的数据。

    DataInputStream对于多线程访问来说不一定是安全的。 线程安全是可选的,是本课程中用户的责任。

    从以下版本开始:
    1.0
    另请参见:
    DataOutputStream
    • 构造方法摘要

      构造方法  
      Constructor 描述
      DataInputStream​(InputStream in)
      创建使用指定的底层InputStream的DataInputStream。
    • 方法摘要

      所有方法  静态方法  接口方法  具体的方法  弃用的方法 
      Modifier and Type 方法 描述
      int read​(byte[] b)
      从包含的输入流中读取一些字节数,并将它们存储到缓冲器阵列 b
      int read​(byte[] b, int off, int len)
      从包含的输入流读取最多 len个字节的数据到字节数组。
      boolean readBoolean​()
      readBoolean方法 DataInput的一般合同。
      byte readByte​()
      readByte方法 DataInput的一般合同。
      char readChar​()
      readCharDataInput的一般合同。
      double readDouble​()
      readDouble方法的一般合同 DataInput
      float readFloat​()
      readFloatDataInput的一般合同。
      void readFully​(byte[] b)
      readFullyDataInput的一般合同。
      void readFully​(byte[] b, int off, int len)
      readFullyDataInput的一般合同。
      int readInt​()
      readIntDataInput的一般合同。
      String readLine​()
      已过时。
      此方法无法将字节正确转换为字符。 从JDK 1.1开始,读取文本行的首选方式是通过BufferedReader.readLine()方法。 使用DataInputStream类读取行的程序可以转换为使用BufferedReader类替换以下形式的代码:
           DataInputStream d = new DataInputStream(in);
       
      有:
           BufferedReader d
                = new BufferedReader(new InputStreamReader(in));
       
      long readLong​()
      readLong方法 DataInput的一般合同。
      short readShort​()
      readShortDataInput的一般合同。
      int readUnsignedByte​()
      readUnsignedByteDataInput的一般合同。
      int readUnsignedShort​()
      readUnsignedShortDataInput的一般合同。
      String readUTF​()
      readUTFDataInput的一般合同。
      static String readUTF​(DataInput in)
      从流in读取以modified UTF-8格式编码的Unicode字符串的表示; 这个字符串然后作为String返回。
      int skipBytes​(int n)
      skipBytesDataInput的一般合同。
    • 构造方法详细信息

      • DataInputStream

        public DataInputStream​(InputStream in)
        创建使用指定的底层InputStream的DataInputStream。
        参数
        in - 指定的输入流
    • 方法详细信息

      • read

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

        如果b为空,则抛出NullPointerException 如果b的长度为零,则不读取字节,返回0 ; 否则,尝试读取至少一个字节。 如果没有字节可用,因为流是文件的-1则返回值-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)
         
        重写:
        readFilterInputStream
        参数
        b - 读取数据的缓冲区。
        结果
        读取到缓冲区的总字节数,如果没有更多的数据,因为已经到达流的末尾, -1
        异常
        IOException - 如果由于文件结尾以外的任何原因无法读取第一个字节,则流已关闭,底层输入流不支持关闭后读取,或者发生另一个I / O错误。
        另请参见:
        FilterInputStream.inInputStream.read(byte[], int, int)
      • 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+ ķ -1] ,留下元件b[off+ ķ ]通过b[off+len-1]不受影响。

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

        重写:
        readFilterInputStream
        参数
        b - 读取数据的缓冲区。
        off - 目标数组 b的起始偏移量
        len - 读取的最大字节数。
        结果
        读取到缓冲区中的总字节数,如果没有更多的数据,因为已经到达流的末尾,那么 -1
        异常
        NullPointerException - 如果 bnull
        IndexOutOfBoundsException - 如果 off为负, len为负数,或 len为大于 b.length - off
        IOException - 如果由于文件结尾以外的任何原因无法读取第一个字节,则流已关闭,底层输入流不支持关闭后读取,或者发生另一个I / O错误。
        另请参见:
        FilterInputStream.inInputStream.read(byte[], int, int)
      • readFully

        public final void readFully​(byte[] b)
                             throws IOException
        readFullyDataInput的一般合同。

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

        Specified by:
        readFully在接口 DataInput
        参数
        b - 读取数据的缓冲区。
        异常
        NullPointerException - 如果 bnull
        EOFException - 如果此输入流在读取所有字节之前到达结束。
        IOException - 流已关闭,包含的输入流不支持关闭后读取,或发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readFully

        public final void readFully​(byte[] b,
                                    int off,
                                    int len)
                             throws IOException
        readFullyDataInput的一般合同。

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

        Specified by:
        readFully在接口 DataInput
        参数
        b - 读取数据的缓冲区。
        off - 数据阵列中的起始偏移量 b
        len - 要读取的字节数。
        异常
        NullPointerException - 如果 bnull
        IndexOutOfBoundsException - 如果 off为负, len ,否则为 len ,大于 b.length - off
        EOFException - 如果此输入流在读取所有字节之前到达结束。
        IOException - 流已关闭,包含的输入流不支持关闭后读取,或发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • skipBytes

        public final int skipBytes​(int n)
                            throws IOException
        skipBytesDataInput的一般合同。

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

        Specified by:
        skipBytes在接口 DataInput
        参数
        n - 要跳过的字节数。
        结果
        实际跳过的字节数。
        异常
        IOException - 如果包含的输入流不支持查询,或流已关闭,并且包含的输入流不支持关闭后读取,或者发生另一个I / O错误。
      • readBoolean

        public final boolean readBoolean​()
                                  throws IOException
        readBooleanDataInput的一般合同。

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

        Specified by:
        readBoolean在接口 DataInput
        结果
        boolean值读。
        异常
        EOFException - 如果此输入流已到达结束。
        IOException - 流已关闭,包含的输入流在关闭后不支持读取,或者发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readByte

        public final byte readByte​()
                            throws IOException
        readByteDataInput的一般合同。

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

        Specified by:
        readByte在接口 DataInput
        结果
        该输入流的下一个字节为有符号的8位 byte
        异常
        EOFException - 如果此输入流已经到达结束。
        IOException - 流已关闭,包含的输入流在关闭后不支持读取,或发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readUnsignedByte

        public final int readUnsignedByte​()
                                   throws IOException
        readUnsignedByteDataInput的一般合同。

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

        Specified by:
        readUnsignedByte在接口 DataInput
        结果
        该输入流的下一个字节被解释为无符号的8位数字。
        异常
        EOFException - 如果此输入流已到达结束。
        IOException - 流已关闭,包含的输入流不支持关闭后读取,或发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readShort

        public final short readShort​()
                              throws IOException
        readShort方法DataInput的一般合同。

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

        Specified by:
        readShort在接口 DataInput
        结果
        该输入流的下两个字节,被解释为一个有符号的16位数字。
        异常
        EOFException - 如果此输入流在读取两个字节之前到达结束。
        IOException - 流已关闭,包含的输入流不支持关闭后读取,或发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readUnsignedShort

        public final int readUnsignedShort​()
                                    throws IOException
        readUnsignedShort方法DataInput的一般合同。

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

        Specified by:
        readUnsignedShort在接口 DataInput
        结果
        该输入流的下两个字节被解释为无符号16位整数。
        异常
        EOFException - 如果此输入流在读取两个字节之前到达结束。
        IOException - 流已关闭,包含的输入流在关闭后不支持读取,或者发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readChar

        public final char readChar​()
                            throws IOException
        readCharDataInput的一般合同。

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

        Specified by:
        readChar在接口 DataInput
        结果
        该输入流的下两个字节,解释为 char
        异常
        EOFException - 如果此输入流在读取两个字节之前到达结束。
        IOException - 流已关闭,包含的输入流在关闭后不支持读取,或发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readInt

        public final int readInt​()
                          throws IOException
        readInt方法的一般合同DataInput

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

        Specified by:
        readInt在接口 DataInput
        结果
        该输入流的接下来的四个字节,解释为 int
        异常
        EOFException - 如果此输入流在读取四个字节之前到达结束。
        IOException - 流已关闭,包含的输入流在关闭后不支持读取,或发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readLong

        public final long readLong​()
                            throws IOException
        readLongDataInput的一般合同。

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

        Specified by:
        readLong在接口 DataInput
        结果
        该输入流的接下来八个字节,解释为 long
        异常
        EOFException - 如果此输入流在读取八个字节之前到达结束。
        IOException - 流已关闭,包含的输入流在关闭后不支持读取,或发生另一个I / O错误。
        另请参见:
        FilterInputStream.in
      • readFloat

        public final float readFloat​()
                              throws IOException
        readFloatDataInput的一般合同。

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

        Specified by:
        readFloat在接口 DataInput
        结果
        该输入流的下四个字节,解释为 float
        异常
        EOFException - 如果此输入流在读取四个字节之前到达结束。
        IOException - 流已关闭,包含的输入流在关闭后不支持读取,或发生另一个I / O错误。
        另请参见:
        readInt()Float.intBitsToFloat(int)
      • readDouble

        public final double readDouble​()
                                throws IOException
        readDoubleDataInput的一般合同。

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

        Specified by:
        readDouble在接口 DataInput
        结果
        该输入流的接下来八个字节,解释为 double
        异常
        EOFException - 如果此输入流在读取八个字节之前到达结束。
        IOException - 流已关闭,包含的输入流不支持关闭后读取,或发生另一个I / O错误。
        另请参见:
        readLong()Double.longBitsToDouble(long)
      • readLine

        @Deprecated
        public final String readLine​()
                              throws IOException
        已过时。 此方法无法将字节正确转换为字符。 从JDK 1.1开始,读取文本行的首选方式是通过BufferedReader.readLine()方法。 使用DataInputStream类读取行的程序可以转换为使用BufferedReader类替换以下形式的代码:
             DataInputStream d = new DataInputStream(in);
         
        有:
             BufferedReader d
                  = new BufferedReader(new InputStreamReader(in));
         
        readLineDataInput的一般合同。

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

        Specified by:
        readLine在接口 DataInput
        结果
        来自此输入流的下一行文本。
        异常
        IOException - 如果发生I / O错误。
        另请参见:
        BufferedReader.readLine()FilterInputStream.in
      • readUTF

        public final String readUTF​()
                             throws IOException
        readUTFDataInput的一般合同。

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

        Specified by:
        readUTF在接口 DataInput
        结果
        一个Unicode字符串。
        异常
        EOFException - 如果此输入流在读取所有字节之前到达结束。
        IOException - 流已关闭,包含的输入流在关闭后不支持读取,或发生另一个I / O错误。
        UTFDataFormatException - 如果字节不表示字符串的有效修改的UTF-8编码。
        另请参见:
        readUTF(java.io.DataInput)
      • readUTF

        public static final String readUTF​(DataInput in)
                                    throws IOException
        从流in读取以modified UTF-8格式编码的Unicode字符串的表示; 这个字符串然后作为String返回。 修改的UTF-8表示的细节与readUTF方法DataInput
        参数
        in - 数据输入流。
        结果
        一个Unicode字符串。
        异常
        EOFException - 如果输入流在所有字节之前到达结束。
        IOException - 流已关闭,包含的输入流不支持关闭后读取,或发生另一个I / O错误。
        UTFDataFormatException - 如果字节不表示Unicode字符串的有效修改的UTF-8编码。
        另请参见:
        readUnsignedShort()