- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- java.io.DataInputStream
-
- All Implemented Interfaces:
-
Closeable
,DataInput
,AutoCloseable
public class DataInputStream extends FilterInputStream implements DataInput
数据输入流允许应用程序以独立于机器的方式从基础输入流读取原始Java数据类型。 应用程序使用数据输出流来写入稍后可以被数据输入流读取的数据。DataInputStream对于多线程访问来说不一定是安全的。 线程安全是可选的,是本课程中用户的责任。
- 从以下版本开始:
- 1.0
- 另请参见:
-
DataOutputStream
-
-
Field Summary
-
Fields inherited from class java.io.FilterInputStream
in
-
-
构造方法摘要
构造方法 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()
见readChar
法DataInput
的一般合同。double
readDouble()
见readDouble
方法的一般合同DataInput
。float
readFloat()
见readFloat
法DataInput
的一般合同。void
readFully(byte[] b)
见readFully
法DataInput
的一般合同。void
readFully(byte[] b, int off, int len)
见readFully
法DataInput
的一般合同。int
readInt()
见readInt
法DataInput
的一般合同。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()
见readShort
法DataInput
的一般合同。int
readUnsignedByte()
见readUnsignedByte
法DataInput
的一般合同。int
readUnsignedShort()
见readUnsignedShort
法DataInput
的一般合同。String
readUTF()
见readUTF
法DataInput
的一般合同。static String
readUTF(DataInput in)
从流in
读取以modified UTF-8格式编码的Unicode字符串的表示; 这个字符串然后作为String
返回。int
skipBytes(int n)
见skipBytes
法DataInput
的一般合同。-
Methods inherited from class java.io.FilterInputStream
available, close, mark, markSupported, read, reset, skip
-
Methods inherited from class java.io.InputStream
readAllBytes, readNBytes, transferTo
-
-
-
-
构造方法详细信息
-
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)
- 重写:
-
read
在FilterInputStream
- 参数
-
b
- 读取数据的缓冲区。 - 结果
-
读取到缓冲区的总字节数,如果没有更多的数据,因为已经到达流的末尾,
-1
。 - 异常
-
IOException
- 如果由于文件结尾以外的任何原因无法读取第一个字节,则流已关闭,底层输入流不支持关闭后读取,或者发生另一个I / O错误。 - 另请参见:
-
FilterInputStream.in
,InputStream.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]
不受影响。- 重写:
-
read
在FilterInputStream
- 参数
-
b
- 读取数据的缓冲区。 -
off
- 目标数组b
的起始偏移量 -
len
- 读取的最大字节数。 - 结果
-
读取到缓冲区中的总字节数,如果没有更多的数据,因为已经到达流的末尾,那么
-1
。 - 异常
-
NullPointerException
- 如果b
是null
。 -
IndexOutOfBoundsException
- 如果off
为负,len
为负数,或len
为大于b.length - off
-
IOException
- 如果由于文件结尾以外的任何原因无法读取第一个字节,则流已关闭,底层输入流不支持关闭后读取,或者发生另一个I / O错误。 - 另请参见:
-
FilterInputStream.in
,InputStream.read(byte[], int, int)
-
readFully
public final void readFully(byte[] b) throws IOException
见readFully
法DataInput
的一般合同。从所包含的输入流中读取此操作的字节数。
- Specified by:
-
readFully
在接口DataInput
- 参数
-
b
- 读取数据的缓冲区。 - 异常
-
NullPointerException
- 如果b
是null
。 -
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
- 如果b
是null
。 -
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
@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));
见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
- 数据输入流。 - 结果
- 一个Unicode字符串。
- 异常
-
EOFException
- 如果输入流在所有字节之前到达结束。 -
IOException
- 流已关闭,包含的输入流不支持关闭后读取,或发生另一个I / O错误。 -
UTFDataFormatException
- 如果字节不表示Unicode字符串的有效修改的UTF-8编码。 - 另请参见:
-
readUnsignedShort()
-
-