模块  java.base
软件包  java.io

Class DataInputStream

  • 实现的所有接口
    CloseableDataInputAutoCloseable

    public class DataInputStreamextends FilterInputStreamimplements DataInput
    数据输入流允许应用程序以与机器无关的方式从底层输入流中读取原始Java数据类型。 应用程序使用数据输出流来写入稍后可由数据输入流读取的数据。

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

    从以下版本开始:
    1.0
    另请参见:
    DataOutputStream
    • 构造方法详细信息

      • DataInputStream

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

      • 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) 
        重写:
        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+ 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 - 如果 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
        见的总承包readFully的方法DataInput

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

        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
        参见readFully方法DataInput的总合同。

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

        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
        参见skipBytes方法DataInput的总合同。

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

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

        public final boolean readBoolean()                          throws IOException
        参见readBoolean方法DataInput的总合同。

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

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

        public final byte readByte()                    throws IOException
        见的总承包readByte的方法DataInput

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

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

        public final int readUnsignedByte()                           throws IOException
        参见readUnsignedByte方法DataInput的总合同。

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

        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
        参见readChar方法DataInput的总合同。

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

        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
        参见readLong方法DataInput的总合同。

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

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

        public final float readFloat()                      throws IOException
        参见readFloat方法DataInput的总合同。

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

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

        public final double readDouble()                        throws IOException
        参见readDouble方法DataInput的总合同。

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

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

        @Deprecatedpublic 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)); 
        参见readLine方法DataInput的总合同。

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

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

        public final String readUTF()                     throws IOException
        见的总承包readUTF的方法DataInput

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

        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()