public interface DataInput
DataInput
接口提供了从一个二进制流,重建他们的数据在任何java读取字节的原始类型。还有一个重建在
modified UTF-8格式的数据
String
设施。
它通常是在这个界面所有的阅读程序真实,如果文件结束之前的字节所需数量一直读到,一个EOFException
(这是一种IOException
)被。如果任何一个字节不能读取的文件比其他任何原因,除了EOFException
抛出一个IOException
。特别是,一个IOException
可能如果输入流已经关闭扔。
数据输入和数据输出接口的实现代表Unicode字符串在一个UTF-8格式略有修改。(有关标准的UTF-8格式,参见3.9节编码形式Unicode Unicode标准4版)。请注意,在下表中,最显着的位出现在远左列中。
All characters in the range '\u0001'
to'\u007F'
are represented by a single byte:Bit Values Byte 1 0 bits 6-0 The null character '\u0000'
and characters in the range'\u0080'
to'\u07FF'
are represented by a pair of bytes:Bit Values Byte 1 1 1 0 bits 10-6 Byte 2 1 0 bits 5-0 char
values in the range'\u0800'
to'\uFFFF'
are represented by three bytes:Bit Values Byte 1 1 1 1 0 bits 15-12 Byte 2 1 0 bits 11-6 Byte 3 1 0 bits 5-0
这种格式和标准的UTF-8格式的区别如下:
'\u0000'
编码的字节格式而不是字节,使编码的字符串不会嵌入空。DataInputStream
,
DataOutput
Modifier and Type | Method and Description |
---|---|
boolean |
readBoolean()
读取一个字节输入并返回
true 如果这个字节为零,
false 如果这个字节为零。
|
byte |
readByte()
读取并返回一个输入字节。
|
char |
readChar()
读两输入字节并返回一个
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()
读取一个字节的输入,零延伸到型
int ,并返回结果,因此在范围
0 通过
255 。
|
int |
readUnsignedShort()
读两输入字节并返回一个值的范围
0
int 通过
65535 。
|
String |
readUTF()
读取一个字符串,一直采用
modified UTF-8编码格式。
|
int |
skipBytes(int n)
试图跳过
n 字节输入流中的数据,丢弃跳过的字节。
|
void readFully(byte[] b) throws IOException
b
。已读取的字节数等于
b
长度。
此方法块,直到下列条件之一发生:
b.length
字节的输入数据是可用的,在这种情况下,一个正常的回报了。EOFException
抛出。EOFException
抛出一个IOException
。如果b
是null
,一NullPointerException
抛出。如果b.length
是零,那么没有字节读。否则,第一个字节存储在单元b[0]
,未来一到b[1]
,等等。如果从这个方法抛出异常,那么它可能是一些但不是所有字节的b
已从输入流中的数据更新。
b
-缓冲区中读取数据。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
void readFully(byte[] b, int off, int len) throws IOException
len
字节输入流中读取。
此方法块,直到下列条件之一发生:
len
字节的输入数据是可用的,在这种情况下,一个正常的回报了。EOFException
抛出。IOException
以外EOFException
抛出。如果b
是null
,一NullPointerException
抛出。如果off
是负的,或len
是负的,或off+len
大于数组b
的长度,然后IndexOutOfBoundsException
抛出。如果len
是零,那么没有字节读。否则,第一个字节存储在单元b[off]
,未来一到b[off+1]
,等等。读取的字节数,最多等于len
。
b
-缓冲区中读取数据。
off
-指定偏移到数据int。
len
-指定要读取的字节数int。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
int skipBytes(int n) throws IOException
n
字节输入流中的数据,丢弃跳过的字节。然而,它可能跳过一些较小的字节数,可能为零。这可能会导致任何一个条件;在
n
字节已经跳过到达了文件的结尾只有一种可能性。这种方法从未抛出一个
EOFException
。跳过的字节数实际返回。
n
-字节数被跳过。
IOException
如果I/O错误发生。
boolean readBoolean() throws IOException
true
如果这个字节为零,
false
如果这个字节为零。这种方法适用于读取字节的
DataOutput
writeBoolean
法编写的界面。
boolean
阅读的价值。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
byte readByte() throws IOException
-128
通过
127
,包容。这种方法适用于读取字节的
DataOutput
writeByte
法编写的界面。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
int readUnsignedByte() throws IOException
int
,并返回结果,因此在范围
0
通过
255
。这种方法适用于读取字节写的界面
DataOutput
的
writeByte
方法如果参数
writeByte
本来是一个范围值
0
通过
255
。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
short readShort() throws IOException
short
价值。让
a
是第一个字节的读
b
是第二字节。返回值:
(short)((a << 8) | (b & 0xff))
此法适用于读取字节的
DataOutput
writeShort
法编写的界面。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
int readUnsignedShort() throws IOException
int
值范围在
0
通过
65535
。让
a
是第一个字节的读
b
是第二字节。返回值:
(((a & 0xff) << 8) | (b & 0xff))
此法适用于读取字节写的界面
DataOutput
的
writeShort
方法如果参数
writeShort
本来是一个范围值
0
通过
65535
。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
char readChar() throws IOException
char
价值。让
a
是第一个字节的读
b
是第二字节。返回值:
(char)((a << 8) | (b & 0xff))
此法适用于阅读的界面
DataOutput
的
writeChar
方法写入的字节。
char
阅读的价值。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
int readInt() throws IOException
int
价值。让
a-d
是第一个通过第四个字节。返回值:
(((a & 0xff) << 24) | ((b & 0xff) << 16) |
((c & 0xff) << 8) | (d & 0xff))
此法适用于阅读的界面
DataOutput
的
writeInt
方法写入的字节。
int
阅读的价值。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
long readLong() throws IOException
long
价值。让
a-h
是第一个通过第八个字节。返回值:
(((long)(a & 0xff) << 56) |
((long)(b & 0xff) << 48) |
((long)(c & 0xff) << 40) |
((long)(d & 0xff) << 32) |
((long)(e & 0xff) << 24) |
((long)(f & 0xff) << 16) |
((long)(g & 0xff) << 8) |
((long)(h & 0xff)))
这种方法适用于阅读的界面DataOutput
的writeLong
方法写入的字节。
long
阅读的价值。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
float readFloat() throws IOException
float
价值。这是通过首先在完全的
readInt
方法的方式构建一个
int
值,然后将这一
float
int
值准确的方法
Float.intBitsToFloat
方式。这种方法适用于阅读的界面
DataOutput
的
writeFloat
方法写入的字节。
float
阅读的价值。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
double readDouble() throws IOException
double
价值。这是通过首先在完全的
readLong
方法的方式构建
long
值,然后将这一
double
long
值准确的方法
Double.longBitsToDouble
方式。这种方法适用于阅读的界面
DataOutput
的
writeDouble
方法写入的字节。
double
阅读的价值。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
String readLine() throws IOException
String
然后返回。请注意,因为此方法处理字节,它不支持完整的Unicode字符集的输入。
如果文件结束之前遇到甚至一个字节可以读取,然后null
返回。否则,每个字节读取由零扩展转换为类型char
。如果遇到的是性格'\n'
,它是被丢弃的,阅读时。如果遇到的是性格'\r'
,就丢弃,如果下面的字节转换为字符'\n'
,然后被丢弃的也;阅读然后停止。如果文件结束之前遇到的人物'\n'
和'\r'
时,停止阅读。一旦阅读已经停止,一个String
返回包含所有字符读不丢弃,以。请注意,此字符串中的每个字符都有一个值小于\u0100
,即(char)256
。
null
如果遇到文件结束前一个字节可以读取。
IOException
如果I/O错误发生。
String readUTF() throws IOException
readUTF
一般合同,它读取Unicode字符串在改进后的UTF-8编码格式的表示;这个字符串是作为
String
返回。
首先,两字节读取和使用的方法完全readUnsignedShort
方式构建一个16位无符号整数。这个整数的值称为utf长度和指定要读取额外的字节数。这些字节,然后转换为字符,考虑他们在组。每个组的长度是从组的第一个字节的值计算的。一组下面的字节,如果有的话,是下一组的第一个字节。
如果一个组的第一个字节和位模式0xxxxxxx
(其中x
意味着“可能0
或1
”),然后组只包括字节。字节为零扩展到形成字符。
如果一个组的第一个字节和位模式110xxxxx
,然后小组组成的字节a
和第二字节b
。如果没有字节b
(因为字节a
是最后一个字节被读取),或如果字节b
不匹配的位模式10xxxxxx
,然后UTFDataFormatException
是扔。否则,将该组转换为字符:
(char)(((a & 0x1F) << 6) | (b & 0x3F))
如果一组的第一个字节和位模式
1110xxxx
,然后小组组成的字节
a
和两个字节
b
和
c
。如果没有字节
c
(因为字节
a
是一个字节的最后两读入),或
b
字节或字节
c
不匹配的位模式
10xxxxxx
,然后
UTFDataFormatException
抛出。否则,该组转换为字符:
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
如果一组的第一个字节匹配模式
1111xxxx
或模式
10xxxxxx
,然后
UTFDataFormatException
抛出。
如果文件结束时在任何时间,在这个过程中,然后EOFException
抛出。
在每一组已转化为这一过程的一个人物,人物都聚集在一起,在同一顺序中相应组从输入流中读取,以形成一个String
,返回的。
界面DataOutput
的writeUTF
方法可以用来编写,适合阅读的方法的数据。
EOFException
如果流到达终点之前阅读所有字节。
IOException
如果I/O错误发生。
UTFDataFormatException
如果字节没有表示一个有效的修改一个字符串编码UTF-8。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.