鸿蒙OS开发文档 鸿蒙OS DataInputStream

2024-02-25 开发教程 鸿蒙OS开发文档 匿名 9

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。

方法总结

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