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

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

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