|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.io
接口 DataInput
- 所有已知子接口:
- ImageInputStream, ImageOutputStream, ObjectInput
- 所有已知实现类:
- DataInputStream, FileCacheImageInputStream, FileCacheImageOutputStream, FileImageInputStream, FileImageOutputStream, ImageInputStreamImpl, ImageOutputStreamImpl, MemoryCacheImageInputStream, MemoryCacheImageOutputStream, ObjectInputStream, RandomAccessFile
-
public interface DataInput
DataInput
接口用于从二进制流中读取字节,并重构所有 Java 基本类型数据。同时还提供根据 UTF-8 修改版格式的数据重构 String
的工具。
对于此接口中的所有数据读取例程来说,如果在读取到所需字节数的数据之前已经到达文件末尾 (end of file),则都将抛出 EOFException
(IOException
的一种)。如果因为文件末尾以外的其他原因无法读取字节,则抛出 IOException
而不是 EOFException
。尤其在输入流已关闭的情况下,将抛出 IOException
。
UTF-8 修改版
DataInput 和 DataOutput 接口的实现表示稍微改版的 UTF-8 格式的 Unicode 字符串。(关于标准 UTF-8 格式的信息,请参阅 The Unicode Standard, Version 4.0 的 3.9 Unicode Encoding Forms 小节)。注意,在下表中,最高有效位显示在最左边的列中。
'\u0001'
到 '\u007F'
范围内的所有字符由单个字节表示:
位值 字节 1
0 位 6-0
null 字符 '\u0000'
和 '\u0080'
到 '\u07FF'
范围内的字符由一对字节表示:
位值 字节 1
1 1 0 位 10-6 字节 2
1 0 位 5-0
'\u0800'
到 '\uFFFF'
范围内的 char
值由三个字节表示:
位值 字节 1
1 1 1 0 位 15-12 字节 2
1 0 位 11-6 字节 3
1 0 位 5-0
这种格式与标准 UTF-8 格式之间的不同如下:
- null 字节
'\u0000'
是用 2-byte 格式而不是 1-byte 格式编码的,因此已编码的字符串中决不会有嵌入的 null。 - 仅使用 1-byte、2-byte 和 3-byte 格式。
- 增补字符是以代理项对的形式表示的。
- 从以下版本开始:
- JDK1.0
- 另请参见:
-
DataInputStream
,DataOutput
方法摘要 | |
---|---|
boolean |
readBoolean() 读取一个输入字节,如果该字节不是零,则返回 true ,如果是零,则返回 false 。 |
byte |
readByte() 读取并返回一个输入字节。 |
char |
readChar() 读取一个输入的 char 并返回该 char 值。 |
double |
readDouble() 读取八个输入字节并返回一个 double 值。 |
float |
readFloat() 读取四个输入字节并返回一个 float 值。 |
void |
readFully(byte[] b) 从输入流中读取一些字节,并将它们存储到缓冲区数组 b 中。 |
void |
readFully(byte[] b, int off, int len) 从输入流中读取 len 个字节。 |
int |
readInt() 读取四个输入字节并返回一个 int 值。 |
String |
readLine() 从输入流中读取下一文本行。 |
long |
readLong() 读取八个输入字节并返回一个 long 值。 |
short |
readShort() 读取两个输入字节并返回一个 short 值。 |
int |
readUnsignedByte() 读取一个输入字节,将它左侧补零 (zero-extend) 转变为 int 类型,并返回结果,所以结果的范围是 0 到 255 。 |
int |
readUnsignedShort() 读取两个输入字节,并返回 0 到 65535 范围内的一个 int 值。 |
String |
readUTF() 读入一个已使用 UTF-8 修改版格式编码的字符串。 |
int |
skipBytes(int n) 试图在输入流中跳过数据的 n 个字节,并丢弃跳过的字节。 |
方法详细信息 |
---|
readFully
void readFully(byte[] b) throws IOException
-
从输入流中读取一些字节,并将它们存储到缓冲区数组
b
中。读取的字节数等于b
的长度。在出现以下条件之一前,此方法将阻塞:
- 输入数据的
b.length
个字节是可用的,在这种情况下,正常返回。 - 检测到文件末尾,在这种情况下,抛出
EOFException
。 - 发生 I/O 错误,在这种情况下,将抛出
IOException
,而不是EOFException
。
如果
b
为null
,则抛出NullPointerException
。如果b.length
为零,则不读取字节。否则,将读取的第一个字节存储到元素b[0]
中,下一个字节存储到b[1]
中,依此类推。如果此方法抛出异常,则可能是因为已经用输入流中的数据更新了b
的某些(但非全部)字节。 - 输入数据的
-
- 参数:
-
b
- 存储读取数据的缓冲区。 - 抛出:
-
EOFException
- 如果此流在读取所有字节之前到达末尾。 -
IOException
- 如果发生 I/O 错误。
readFully
void readFully(byte[] b, int off, int len) throws IOException
-
从输入流中读取
len
个字节。在出现以下条件之一以前,此方法将阻塞:
- 输入数据的
len
个字节是可用的,在这种情况下,正常返回。 - 检测到文件末尾,在这种情况下,抛出
EOFException
。 - 如果发生 I/O 错误,在这种情况下,将抛出
IOException
,而不是EOFException
。
如果
b
为null
,则抛出NullPointerException
。如果off
为负,或len
为负,抑或off+len
大于数组b
的长度,则抛出IndexOutOfBoundsException
。如果len
为零,则不读取字节。否则,将读取的第一个字节存储到元素b[off]
中,下一个字节存储到b[off+1]
中,依此类推。读取的字节数至多等于b[0]
。 - 输入数据的
-
- 参数:
-
b
- 存储读取数据的缓冲区。 -
off
- 指定数据中的偏移量的 int。 -
len
- 指定读取的字节数的 int。 - 抛出:
-
EOFException
- 如果此流在读取所有字节之前到达末尾。 -
IOException
- 如果发生 I/O 错误。
skipBytes
int skipBytes(int n) throws IOException
-
试图在输入流中跳过数据的
n
个字节,并丢弃跳过的字节。不过,它可以跳过更少的字节数,该字节数甚至可能为零。这可能由很多情况引起;在已经跳过n
个字节前到达文件末尾只是其中的一种可能。此方法从不抛出EOFException
。返回实际跳过的字节数。 -
- 参数:
-
n
- 要跳过的字节数。 - 返回:
- 实际跳过的字节数。
- 抛出:
-
IOException
- 如果发生 I/O 错误。
readBoolean
boolean readBoolean() throws IOException
-
读取一个输入字节,如果该字节不是零,则返回
true
,如果是零,则返回false
。此方法适用于读取用接口DataOutput
的writeBoolean
方法写入的字节。 -
- 返回:
-
读取的
boolean
值。 - 抛出:
-
EOFException
- 如果此流在读取所有字节之前到达末尾。 -
IOException
- 如果发生 I/O 错误。
readByte
byte readByte() throws IOException
-
读取并返回一个输入字节。该字节被看作是
-128
到127
(包含)范围内的一个有符号值。此方法适用于读取用接口DataOutput
的writeByte
方法写入的字节。 -
- 返回:
- 读取的 8 位值。
- 抛出:
-
EOFException
- 如果此流在读取所有字节之前到达末尾。 -
IOException
- 如果发生 I/O 错误。
readUnsignedByte
int readUnsignedByte() throws IOException
-
读取一个输入字节,将它左侧补零 (zero-extend) 转变为
int
类型,并返回结果,所以结果的范围是0
到255
。如果接口DataOutput
的writeByte
方法的参数是0
到255
之间的值,则此方法适用于读取用writeByte
写入的字节。 -
- 返回:
- 读取的无符号 8 位值。
- 抛出:
-
EOFException
- 如果此流在读取所有字节之前到达末尾。 -
IOException
- 如果发生 I/O 错误。
readShort
short readShort() throws IOException
-
读取两个输入字节并返回一个
short
值。设a
为第一个读取字节,b
为第二个读取字节。返回的值是:
此方法适用于读取用接口(short)((a << 8) | (b & 0xff))
DataOutput
的writeShort
方法写入的字节。 -
- 返回:
- 读取的 16 位值。
- 抛出:
-
EOFException
- 如果此流在读取所有字节之前到达末尾。 -
IOException
- 如果发生 I/O 错误。