- 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 方法 描述 intread(byte[] b)从包含的输入流中读取一些字节数,并将它们存储到缓冲器阵列b。intread(byte[] b, int off, int len)从包含的输入流读取最多len个字节的数据到字节数组。booleanreadBoolean()见readBoolean方法DataInput的一般合同。bytereadByte()见readByte方法DataInput的一般合同。charreadChar()见readChar法DataInput的一般合同。doublereadDouble()见readDouble方法的一般合同DataInput。floatreadFloat()见readFloat法DataInput的一般合同。voidreadFully(byte[] b)见readFully法DataInput的一般合同。voidreadFully(byte[] b, int off, int len)见readFully法DataInput的一般合同。intreadInt()见readInt法DataInput的一般合同。StringreadLine()已过时。此方法无法将字节正确转换为字符。 从JDK 1.1开始,读取文本行的首选方式是通过BufferedReader.readLine()方法。 使用DataInputStream类读取行的程序可以转换为使用BufferedReader类替换以下形式的代码:
有:DataInputStream d = new DataInputStream(in);BufferedReader d = new BufferedReader(new InputStreamReader(in));longreadLong()见readLong方法DataInput的一般合同。shortreadShort()见readShort法DataInput的一般合同。intreadUnsignedByte()见readUnsignedByte法DataInput的一般合同。intreadUnsignedShort()见readUnsignedShort法DataInput的一般合同。StringreadUTF()见readUTF法DataInput的一般合同。static StringreadUTF(DataInput in)从流in读取以modified UTF-8格式编码的Unicode字符串的表示; 这个字符串然后作为String返回。intskipBytes(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()
-
-