DataInputStream
java.lang.Object
|—java.io.InputStream
|—|—java.io.FilterInputStream
|—|—|—java.io.DataInputStream
public class DataInputStream
extends FilterInputStream
implements DataInput
数据输入流允许应用程序以与机器无关的方式从底层输入流中读取原始 Java 数据类型。 应用程序使用数据输出流写入数据,这些数据稍后可以由数据输入流读取。
DataInputStream 对于多线程访问不一定是安全的。 线程安全是可选的,并且是此类中方法的用户的责任。
Since:
JDK1.0
字段摘要
从类 java.io.FilterInputStream 继承的字段 |
---|
in |
构造函数摘要
构造函数 | 描述 |
---|---|
DataInputStream(InputStream in) | 创建一个使用指定基础 InputStream 的 DataInputStream。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
int | read(byte[] b) | 从包含的输入流中读取一些字节并将它们存储到缓冲区数组中 b。 |
int | read(byte[] b, int off, int len) | 从包含的输入流中读取最多 len 个字节的数据到一个字节数组中。 |
boolean | readBoolean() | 请参阅 DataInput 的 readBoolean 方法的一般约定。 |
byte | readByte() | 请参阅 DataInput 的 readByte 方法的一般约定。 |
char | readChar() | 请参阅 DataInput 的 readChar 方法的一般约定。 |
double | readDouble() | 请参阅 DataInput 的 readDouble 方法的一般约定。 |
float | readFloat() | 请参阅 DataInput 的 readFloat 方法的一般约定。 |
void | readFully(byte[] b) | 请参阅 DataInput 的 readFully 方法的一般约定。 |
void | readFully(byte[] b, int off, int len) | 请参阅 DataInput 的 readFully 方法的一般约定。 |
int | readInt() | 请参阅 DataInput 的 readInt 方法的一般约定。 |
String | readLine() | 已弃用。 此方法不能正确地将字节转换为字符。 从 JDK 1.1 开始,读取文本行的首选方法是通过 BufferedReader.readLine() 方法。 使用 DataInputStream 类读取行的程序可以通过替换形式的代码转换为使用 BufferedReader 类 |
long | readLong() | 请参阅 DataInput 的 readLong 方法的一般约定。 |
short | readShort() | 请参阅 DataInput 的 readShort 方法的一般约定。 |
int | readUnsignedByte() | 请参阅 DataInput 的 readUnsignedByte 方法的一般约定。 |
int | readUnsignedShort() | 请参阅 DataInput 的 readUnsignedShort 方法的一般约定。 |
String | readUTF() | 请参阅 DataInput 的 readUTF 方法的一般约定。 |
static String | readUTF(DataInput in) | 从流中读取以修改的 UTF-8 格式编码的 Unicode 字符串的表示形式; 然后这个字符串作为字符串返回。 |
int | skipBytes(int n) | 请参阅 DataInput 的 skipBytes 方法的一般协定。 |
从类 java.io.FilterInputStream 继承的方法 |
---|
available, close, mark, markSupported, read, reset, skip |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造函数详细信息
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)
覆盖:
读入类 FilterInputStream
参数:
参数名称 | 参数描述 |
---|---|
b | 读取数据的缓冲区。 |
返回:
读入缓冲区的总字节数,如果由于到达流的末尾而没有更多数据,则为 -1。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果第一个字节由于文件结尾以外的任何原因无法读取,则流已关闭并且底层输入流不支持关闭后读取,或者发生另一个 I/O 错误。 |
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] 都不受影响。
覆盖:
读入类 FilterInputStream
参数:
参数名称 | 参数描述 |
---|---|
b | 读取数据的缓冲区。 |
off | 目标数组 b 中的起始偏移量 |
len | 读取的最大字节数。 |
返回:
读入缓冲区的总字节数,如果由于到达流的末尾而没有更多数据,则为 -1。
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果 b 为空。 |
IndexOutOfBoundsException | 如果 off 为负数,len 为负数,或者 len 大于 b.length – off |
IOException | 如果第一个字节由于文件结尾以外的任何原因无法读取,则流已关闭并且底层输入流不支持关闭后读取,或者发生另一个 I/O 错误。 |
readFully
public final void readFully(byte[] b) throws IOException
请参阅 DataInput 的 readFully 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readFully
参数:
参数名称 | 参数描述 |
---|---|
b | 读取数据的缓冲区。 |
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取所有字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readFully
public final void readFully(byte[] b, int off, int len) throws IOException
请参阅 DataInput 的 readFully 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readFully
参数:
参数名称 | 参数描述 |
---|---|
b | 读取数据的缓冲区。 |
off | 数据的起始偏移量。 |
len | 要读取的字节数。 |
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取所有字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
skipBytes
public final int skipBytes(int n) throws IOException
请参阅 DataInput 的 skipBytes 方法的一般协定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 skipBytes
参数:
参数名称 | 参数描述 |
---|---|
n | 要跳过的字节数。 |
返回:
跳过的实际字节数。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果包含的输入流不支持查找,或者流已经关闭并且包含的输入流不支持关闭后的读取,或者发生另一个 I/O 错误。 |
readBoolean
public final boolean readBoolean() throws IOException
请参阅 DataInput 的 readBoolean 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readBoolean
返回:
读取的布尔值。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果这个输入流已经结束。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readByte
public final byte readByte() throws IOException
请参阅 DataInput 的 readByte 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readByte
返回:
此输入流的下一个字节为有符号的 8 位字节。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果这个输入流已经结束。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readUnsignedByte
public final int readUnsignedByte() throws IOException
请参阅 DataInput 的 readUnsignedByte 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readUnsignedByte
返回:
此输入流的下一个字节,解释为无符号 8 位数。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果这个输入流已经结束。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readShort
public final short readShort() throws IOException
请参阅 DataInput 的 readShort 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readShort
返回:
此输入流的下两个字节,解释为带符号的 16 位数。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取两个字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readUnsignedShort
public final int readUnsignedShort() throws IOException
请参阅 DataInput 的 readUnsignedShort 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readUnsignedShort
返回:
此输入流的下两个字节,解释为无符号 16 位整数。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取两个字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readChar
public final char readChar() throws IOException
请参阅 DataInput 的 readChar 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readChar
返回:
此输入流的下两个字节,解释为 char。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取两个字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readInt
public final int readInt() throws IOException
请参阅 DataInput 的 readInt 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readInt
返回:
此输入流的下四个字节,解释为 int。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取四个字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readLong
public final long readLong() throws IOException
请参阅 DataInput 的 readLong 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readLong
返回:
此输入流的接下来的 8 个字节,解释为 long。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取八个字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readFloat
public final float readFloat() throws IOException
请参阅 DataInput 的 readFloat 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readFloat
返回:
此输入流的下四个字节,解释为浮点数。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取四个字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readDouble
public final double readDouble() throws IOException
请参阅 DataInput 的 readDouble 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readDouble
返回:
此输入流的接下来的八个字节,解释为双精度。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取八个字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
readLine
@Deprecated public final String readLine() throws IOException
已弃用。 此方法不能正确地将字节转换为字符。 从 JDK 1.1 开始,读取文本行的首选方法是通过 BufferedReader.readLine() 方法。 使用 DataInputStream 类读取行的程序可以通过替换形式的代码转换为使用 BufferedReader 类:
DataInputStream d = new DataInputStream(in);
with:
BufferedReader d
= new BufferedReader(new InputStreamReader(in));
请参阅 DataInput 的 readLine 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readLine
返回:
此输入流中的下一行文本。
Throws:
Throw名称 | Throw描述 |
---|---|
IOException | 如果发生 I/O 错误。 |
readUTF
public final String readUTF() throws IOException
请参阅 DataInput 的 readUTF 方法的一般约定。
此操作的字节从包含的输入流中读取。
指定者:
接口 DataInput 中的 readUTF
返回:
一个 Unicode 字符串。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果此输入流在读取所有字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
UTFDataFormatException | 如果字节不代表字符串的有效修改 UTF-8 编码。 |
readUTF
public static final String readUTF(DataInput in) throws IOException
从流中读取以修改的 UTF-8 格式编码的 Unicode 字符串的表示形式; 然后这个字符串作为字符串返回。 修改后的 UTF-8 表示的细节与 DataInput 的 readUTF 方法完全相同。
参数:
参数名称 | 参数描述 |
---|---|
in | 一个数据输入流。 |
返回:
一个 Unicode 字符串。
Throws:
Throw名称 | Throw描述 |
---|---|
EOFException | 如果输入流在所有字节之前到达末尾。 |
IOException | 流已关闭且包含的输入流不支持关闭后读取,或发生另一个 I/O 错误。 |
UTFDataFormatException | 如果字节不代表 Unicode 字符串的有效修改 UTF-8 编码。 |