树叶云鸿蒙OS教程:鸿蒙OS DataInputStream

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 编码。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/188417.html<

(0)
运维的头像运维
上一篇2025-03-30 17:43
下一篇 2025-03-30 17:44

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注