树叶云鸿蒙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

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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