IO-DataInputStream

java.io

类 DataInputStream

java.lang.Object

┗java.io.InputStream

┗java.io.FilterInputStream

┗java.io.DataInputStream

所有已实现的接口:

Closeable, DataInput

public class DataInputStream extends FilterInputStream implements DataInput

数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。

DataInputStream 对于多线程访问不一定是安全的。 线程安全是可选的,它由此类方法的使用者负责。

字段摘要

从类 java.io.FilterInputStream 继承的字段

in

 

构造方法摘要

DataInputStream(InputStream in)

使用指定的底层 InputStream 创建一个 DataInputStream。

方法摘要

int read(byte[] b)

从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组 b 中。

int read(byte[] b, int off, int len)

从包含的输入流中将最多 len 个字节读入一个 byte 数组中。

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 类,只要将以下形式的代码:

DataInputStream d = new DataInputStream(in);

替换为:

BufferedReader d

= new BufferedReader(new InputStreamReader(in));

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)

从流 in 中读取用 UTF-8 修改版格式编码的 Unicode 字符格式的字符串;然后以 String 形式返回此字符串。

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 中。以整数形式返回实际读取的字节数。在输入数据可用、检测到文件末尾 (end of file) 或抛出异常之前,此方法将一直阻塞。

如果 b 为 null,则抛出 NullPointerException。如果 b 的长度为 0,则不读取字节并返回 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 中的 read

参数:

b - 存储读取数据的缓冲区。

返回:

读入缓冲区的字节总数;如果因为已经到达流末尾而没有更多的数据,则返回 -1。

抛出:

IOException - 如果不是因为流位于文件末尾而无法读取第一个字节;该流已关闭并且底层输入流在关闭后不支持读取操作;发生其他 I/O 错误。

read

public final int read(byte[] b, int off, int len) throws IOException

从包含的输入流中将最多 len 个字节读入一个 byte 数组中。尽量读取 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 中的 read

参数:

b - 存储读取数据的缓冲区。

off - 目标数组 b 中的起始偏移量

len - 读取的最大字节数。

返回:

读入缓冲区的字节总数;如果因为已经到达流末尾而没有更多的数据,则返回 -1。

抛出:

NullPointerException - 如果 b 为 null。

IndexOutOfBoundsException - 如果 off 为负,len 为负,或者 len 大于 b.length - off

IOException - 如果不是因为流位于文件末尾而无法读取第一个字节;该流已关闭并且底层输入流在关闭后不支持读取操作;发生其他 I/O 错误。

readFully

public final void readFully(byte[] b) throws IOException

参见 DataInput 的 readFully 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readFully

参数:

b - 存储读取数据的缓冲区。

抛出:

EOFException - 如果此输入流在读取所有字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readFully

public final void readFully(byte[] b, int off, int len) throws IOException

参见 DataInput 的 readFully 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readFully

参数:

b - 存储读取数据的缓冲区。

off - 数据的起始偏移量。

len - 要读取的字节数。

抛出:

EOFException - 如果此输入流在读取所有字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

skipBytes

public final int skipBytes(int n) throws IOException

参见 DataInput 的 skipBytes 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 skipBytes

参数:

n - 要跳过的字节数。

返回:

实际跳过的字节数。

抛出:

IOException - 如果包含的输入流不支持查找操作;该流已关闭并且包含的输入流在关闭后不支持读取操作;发生其他 I/O 错误。

readBoolean

public final boolean readBoolean() throws IOException

参见 DataInput 的 readBoolean 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readBoolean

返回:

读取的 boolean 值。

抛出:

EOFException - 如果此输入流已经到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生另其他 I/O 错误。

 

readByte

public final byte readByte() throws IOException

参见 DataInput 的 readByte 方法的常规协定。

从所包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readByte

返回:

此输入流的下一个字节,以有符号 8 位 byte 的形式表示。

抛出:

EOFException - 如果此输入流已经到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readUnsignedByte

public final int readUnsignedByte() throws IOException

参见 DataInput 的 readUnsignedByte 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readUnsignedByte

返回:

此输入流的下一个字节,将它解释为一个无符号 8 位数。

抛出:

EOFException - 如果此输入流已经到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readShort

public final short readShort() throws IOException

参见 DataInput 的 readShort 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readShort

返回:

此输入流的下两个字节,将它们解释为一个有符号 16 位数。

抛出:

EOFException - 如果此输入流在读取这两个字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readUnsignedShort

public final int readUnsignedShort() throws IOException

参见 DataInput 的 readUnsignedShort 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readUnsignedShort

返回:

此输入流的下两个字节,将它们解释为一个无符号 16 位整数。

抛出:

EOFException - 如果此输入流在读取这两个字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readChar

public final char readChar() throws IOException

参见 DataInput 的 readChar 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readChar

返回:

此输入流的下两个字节,将它们解释为一个 char。

抛出:

EOFException - 如果此输入流在读取这两个字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readInt

public final int readInt() throws IOException

参见 DataInput 的 readInt 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readInt

返回:

此输入流的下四个字节,将它们解释为一个 int。

抛出:

EOFException - 如果此输入流在读取这四个字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readLong

public final long readLong() throws IOException

参见 DataInput 的 readLong 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readLong

返回:

此输入流的下八个字节,将它们解释为一个 long。

抛出:

EOFException - 如果此输入流在读取这八个字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readFloat

public final float readFloat() throws IOException

参见 DataInput 的 readFloat 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readFloat

返回:

此输入流的下四个字节,将它们解释为一个 float。

抛出:

EOFException - 如果此输入流在读取这四个字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readDouble

public final double readDouble() throws IOException

参见 DataInput 的 readDouble 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readDouble

返回:

此输入流的下八个字节,将它们解释为一个 double。

抛出:

EOFException - 如果此输入流在读取这八个字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

readLine

@Deprecated

public final String readLine() throws IOException

已过时。 该方法无法将字节正确转换为字符。从 JDK 1.1 开始,读取文本行的首选方法是使用 BufferedReader.readLine() 方法。使用 DataInputStream 类读取文本行的程序可以改为使用 BufferedReader 类,只要将以下形式的代码:

DataInputStream d = new DataInputStream(in);

替换为:

BufferedReader d

= new BufferedReader(new InputStreamReader(in));

参见 DataInput 的 readLine 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readLine

返回:

此输入流中的下一文本行。

抛出:

IOException - 如果发生 I/O 错误。

readUTF

public final String readUTF() throws IOException

参见 DataInput 的 readUTF 方法的常规协定。

从包含的输入流中读取此操作需要的字节。

指定者:

接口 DataInput 中的 readUTF

返回:

一个 Unicode 字符串。

抛出:

EOFException - 如果此输入流在读取所有字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

UTFDataFormatException - 如果这些字节不表示一个有效的、UTF-8 修改版编码的字符串。

readUTF

public static final String readUTF(DataInput in) throws IOException

从流 in 中读取用 UTF-8 修改版格式编码的 Unicode 字符格式的字符串;然后以 String 形式返回此字符串。UTF-8 修改版表示形式的一些细节与 DataInput 的 readUTF 方法完全相同。

参数:

in - 数据输入流。

返回:

一个 Unicode 字符串。

抛出:

EOFException - 如果此输入流在读取所有字节之前到达末尾。

IOException - 该流已关闭并且包含的输入流在关闭后不支持读取操作,或者发生其他 I/O 错误。

UTFDataFormatException - 如果这些字节不表示一个有效的、UTF-8 修改版编码的 Unicode 字符串。

时间: 2024-08-04 05:25:45

IO-DataInputStream的相关文章

Java.io.DataInputStream.readInt()

1. 代码 import java.io.DataInputStream; import java.io.IOException; public class Test { public static void main(String[] args) { System.out.println("请输入数字:"); DataInputStream dis = new DataInputStream(System.in); int x = 0; try { x = dis.readInt()

java io流 数据流 DataInputStream、DataOutputStream、ByteArrayInputStream、ByteArrayOutputStream

例子程序: package io; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class TestDataStream { public static void main(String[] a

JAVA IO操作:数据操作流:DataOutputStream和DataInputStream

掌握DataOutputStream和DataInputStream的作用. 可以使用DataOutputStream和DataInputStream写入和读取数据. 在IO包中提供了两个与平台无关的数据操作流 数据输出流:DataOutputStream 数据输入流:DataInputStream 通常按照一定格式将输入输出,再按照一定格式将数据输入. 要想使用数据输出流和输入流,则肯定要用户指定数据的保存格式.必须按指定的格式保存数据,才可以将数据输入流将数据读取进来. DataOutput

Java IO之DataInputStream,ObjectInputStream,ByteArrayInputStream等

一.节点流 1.字节数组 字节 节点流 输入流 ByteArrayInputStream read(byte[] b, int off, int len)+close() 输出流 ByteArrayOutputStream write(byte[] b, int off, int len)+ toByteArray() 这是个新增方法,不要使用多态 package IOOthers; import java.io.BufferedInputStream; import java.io.ByteA

【Java】IO流--数据流--DataInputStream、DataOutputStream

DataInputStream 和 DataOutputStream1) 提供了可以存取所有 Java 基础类型数据(如:int,double等)和 String 的方法.2) 处理流,只针对字节流,二进制文件3) 输入流链和输出流链4) 注意:只要关闭上层流即可 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.

DataInputStream和DataOutputStream

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; impor

DataOutputStream&DataInputStream

我们总觉得历史是极其遥远的东西,与我们并无关联,又觉得历史隐藏在图书馆的旧书之中. 然而,我们每个人都有真真切切的历史.那便是每日的历史.今天自己做了些什么,又是怎么做的,都会成为你历史中的一页. 是畏缩不前.碌碌无为,还是勇猛挑战,花心思比昨天做的更好.每种态度,都会写就属于你的历史. --尼采 <快乐的知识> 下面是今天的练习,细节都写到注释里面了: 1 package Zhang; 2 3 import java.io.DataInputStream; 4 5 import java.i

黑马程序员——io之第四部分

--Java培训.Android培训.iOS培训..Net培训.期待与您交流! -- 终于把io流全部看完,写完了. 1:对象的序列化 ObjectInputStream ObjectOutputStream 对象的持久化储存 2:管道流的应用:PipedOutputStream PipedInputStream connect()方法 相关联到的技术 多线程(Runnable) 3:随机访问文件流:RandomAccessFile("") "r" 以只读方式打开.

黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或文件夹封装成对象 (2)方便于对“文件”与“文件夹属性信息”进行操作 (3)File对象,可以作为参数传递给流的构造函数 (二)构造方法 * 通过File的构造函数创建File对象 方式1:File f = new File("c:\\a.txt"); 方式2:File f2 = newF

java中io流浅析

1.java.io包下File类:java程序中的此类的一个对象,就对应着硬盘中的一个文件或网络中的一个资源.File file1 = new File("d:\\io\\helloworld.txt");File file2 = new File("d:\\io\\io1");>1.File既可以表示一个文件(.doc .xls .mp3 .avi .jpg .dat),也可以表示一个文件目录!>2.File类的对象是与平台无关的.>3.File