- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- java.io.DataInputStream
-
- 实现的所有接口
-
Closeable
,DataInput
,AutoCloseable
public class DataInputStreamextends FilterInputStreamimplements DataInput
数据输入流允许应用程序以与机器无关的方式从底层输入流中读取原始Java数据类型。 应用程序使用数据输出流来写入稍后可由数据输入流读取的数据。DataInputStream对于多线程访问不一定安全。 线程安全是可选的,是本课程中方法用户的责任。
- 从以下版本开始:
- 1.0
- 另请参见:
-
DataOutputStream
-
-
字段汇总
-
声明的属性在类 java.io.FilterInputStream
in
-
-
构造方法摘要
构造方法 构造器 描述 DataInputStream(InputStream in)
创建使用指定的基础InputStream的DataInputStream。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 弃用的方法 变量和类型 方法 描述 int
read(byte[] b)
从包含的输入流中读取一些字节数,并将它们存储到缓冲区数组b
。int
read(byte[] b, int off, int len)
从包含的输入流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()
已过时。此方法无法将字节正确转换为字符。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
的总合同。-
声明方法的类 java.io.FilterInputStream
available, close, mark, markSupported, read, reset, skip
-
声明方法的类 java.io.InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
-
-
-
-
构造方法详细信息
-
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)
- 重写:
-
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+
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错误。 - 另请参见:
-
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
@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 theBufferedReader.readLine()
method. Programs that use theDataInputStream
class to read lines can be converted to use theBufferedReader
class by replacing code of the form: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()
-
-