public interface DataInput
DataInput 接口用于从二进制流中读取字节,并重构所有 Java 基本类型数据。同时还提供根据 UTF-8
修改版格式的数据重构 String 的工具。
对于此接口中的所有数据读取例程来说,如果在读取到所需字节数的数据之前已经到达文件末尾 (end of file),则都将抛出
EOFException(IOException
的一种)。如果因为文件末尾以外的其他原因无法读取字节,则抛出 IOException 而不是
EOFException。尤其在输入流已关闭的情况下,将抛出 IOException。
方法详解:
boolean readBoolean()
读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false。此方法适用于读取用接口
DataOutput 的 writeBoolean
方法写入的字节。返回:读取的 boolean 值。 |
byte readByte()
读取并返回一个输入字节。此方法适用于读取用接口 DataOutput 的 writeByte
方法写入的字节。返回:读取的 8 位值。 |
char readChar()
读取一个输入的 char 并返回该 char 值。Unicode char
由两个字节组成。设 a 为第一个读取字节,b
为第二个读取字节。返回的值是:返回:读取的 Unicode char
值。 |
double readDouble()
读取八个输入字节并返回一个 double 值。实现这一点的方法是:先使用与 readlong 方法完全相同的方式构造一个
long 值,然后使用与 Double.longBitsToDouble 方法完全相同的方式将此
long 值转换成一个 double 值。此方法适用于读取用接口
DataOutput 的 writeDouble 方法写入的字节。 |
float readFloat()
读取四个输入字节并返回一个 float 值。实现这一点的方法是:先使用与 readInt 方法完全相同的方式构造一个
int 值,然后使用与 Float.intBitsToFloat 方法完全相同的方式将此
int 值转换成一个 float 值。此方法适用于读取用接口
DataOutput 的 writeFloat 方法写入的字节。 |
void readFully(byte[] b)
throws IOException,从输入流中读取一些字节,并将它们存储到缓冲区数组 b 中。读取的字节数等于 b 的长度。如果 b 为
null,则抛出 NullPointerException。如果
b.length 为零,则不读取字节。否则,将读取的第一个字节存储到元素 b[0]
中,下一个字节存储到 b[1] 中,依此类推。如果此方法抛出异常,则可能是因为已经用输入流中的数据更新了
b 的某些(但非全部)字节。参数:b -
存储读取数据的缓冲区。 |
void readFully(byte[] b,
int off, int len)
从输入流中读取 len 个字节。如果 b 为 null,则抛出
NullPointerException。如果 off 为负,或
len 为负,抑或 off+len 大于数组 b 的长度,则抛出
IndexOutOfBoundsException。如果 len
为零,则不读取字节。否则,将读取的第一个字节存储到元素 b[off] 中,下一个字节存储到
b[off+1] 中,依此类推。读取的字节数至多等于
b[0]。参数:b -
存储读取数据的缓冲区。off - 指定数据中的偏移量的 int。len - 指定读取的字节数的
int。 |
int readInt()
读取四个输入字节并返回一个 int 值。设 a 为第一个读取字节,b
为第二个读取字节,c 为第三个读取字节,d
为第四个读取字节。返回的值是: (((a & 0xff) << 24) | ((b & 0xff)
<< 16) |返回:读取的 |
String readLine()
从输入流中读取下一文本行。该方法读取连续的字节,将每个字节分别转换成一个字符,直到遇到行结尾符或末尾;然后以 String 形式返回读取的字符。注意,因为此方法处理字符,所以它不支持整个 Unicode
字符集的输入。如果在一个字节都没有读取的时候就遇到文件末尾,则返回 null。否则,通过左侧补零将读取的每个字节转换成
char 类型的值。如果遇到字符 ‘\n‘,则丢弃它并且停止读取。如果遇到字符
‘\r‘ 则丢弃它,如果后续字节转变成字符 ‘\n‘,则同样丢弃,并且停止读取。如果在遇到字符
‘\n‘ 和 ‘\r‘ 之一前遇到文件末尾,则停止读取。一旦已停止读取,则返回一个
String,它按顺序包含所有已读取且未丢弃的字符。注意,此字符串中的每个字符的值都将小于
\u0100(即 (char)256)的值。 |
long readLong()
读取八个输入字节并返回一个 long 值。设 a 为第一个读取字节,b
为第二个读取字节,c 为第三个读取字节,d 为第四个读取字节,e
为五个读取字节,f 为第六个读取字节,g 为第七个读取字节,h
为第八个读取字节。返回的值是:
|
short readShort()
读取两个输入字节并返回一个 short 值。设 a 为第一个读取字节,b
为第二个读取字节。返回的值是:(short)((a << 8) | (b & 0xff))此方法适用于读取用接口 DataOutput 的
writeShort 方法写入的字节。返回:读取的 16 位值。 |
int readUnsignedByte()
读取一个输入字节,将它左侧补零 (zero-extend) 转变为 int类型,并返回结果,所以结果的范围是 0 到
255。如果接口 DataOutput 的 writeByte
方法的参数是 0 到 255 之间的值,则此方法适用于读取用
writeByte 写入的字节。 返回:读取的无符号 8
位值。 |
int readUnsignedShort()
读取两个输入字节,并返回 0 到 65535 范围内的一个 int 值。设
a 为第一个读取字节,b 为第二个读取字节。返回的值是:返回:读取的无符号 16 位值。 |
String readUTF()
读入一个已使用 UTF-8 修改版格式编码的字符串。 |
int skipBytes(int n) throws
IOException试图在输入流中跳过数据的 n 个字节,并丢弃跳过的字节。不过,它可以跳过更少的字节数,该字节数甚至可能为零。这可能由很多情况引起;在已经跳过
n 个字节前到达文件末尾只是其中的一种可能。此方法从不抛出
EOFException。返回实际跳过的字节数。 参数:n
- 要跳过的字节数。返回:实际跳过的字节数。 |
public interface DataOutput
DataOutput接口用于将任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流。同时还提供了一个将String转换成 UTF-8 修改版格式并写入所得到的系列字节的工具。
对于此接口中写入字节的所有方法,如果由于某种原因无法写入某个字节,则抛出 IOException。
void write(byte[] b)
将数组 b 中的所有字节写入输出流。如果 b 为 null,则抛出
NullPointerException。如果 b.length
为零,则不写入字节。否则,首先写入字节 b[0],然后写入字节
b[1],依此类推;最后一个写入字节是 b[b.length-1]。 |
void
write(byte[] b,
int off, int len)
将数组 b 中的 len个字节按顺序写入输出流。如果 b 为
null,则抛出 NullPointerException。如果
off 为负,或 len 为负,抑或 off+len 大于数组
b 的长度,则抛出 IndexOutOfBoundsException。如果
len 为零,则不写入字节。否则,首先写入字节 b[off],然后写入字节
b[off+1],依此类推;最后一个写入字节是
b[off+len-1]。 参数:b -
数据。off - 数据中的起始偏移量。len - 要写入的字节数。 |
void write(int b)
将参数 b 的八个低位写入输出流。忽略 b 的 24 个高位。 |
void writeBoolean(boolean v)
将一个 boolean 值写入输出流。如果参数 v 为 true,则写入值
(byte)1;如果 v 为 false,则写入值
(byte)0。此方法写入的字节可由 DataInput 接口的
readBoolean 方法读取,然后该方法将返回一个等于 v 的
boolean 值。 |
void writeByte(int v)
将参数 v 的八个低位写入输出流。忽略 v 的 24 个高位。(这意味着
writeByte 的作用与使用整数做参数的 write 完全相同。)此方法写入的字节可由
DataInput 接口的 readByte 方法读取,然后该方法将返回一个等于
(byte)v 的 byte 值。 |
void writeBytes(String s)
将一个字符串写入输出流。字符串 s 中的每一个字符被依次写入输出流,每个字符用一个字节表示。如果 s 为
null,则抛出 NullPointerException。
如果 |
void writeChar(int v)
将一个 char 值写入输出流,该值由两个字节组成。 |
void writeChars(String s)
将字符串 s 中的所有字符按顺序写入输出流,每个字符用两个字节表示。如果 s 为
null,则抛出 NullPointerException。如果
s.length 为零,则不写入字符。否则,首先写入字符 s[0],然后写入字符
s[1],依此类推;最后一个写入字符是 s[s.length-1]。使用与
writeChar 方法完全相同的方法为每个字符实际写入两个字节,先使用高位字节。 |
void writeDouble(double v)
将一个 double 值写入输出流,该值由八个字节组成。 |
void writeFloat(float v)
将一个 float 值写入输出流,该值由四个字节组成。 |
void writeInt(int v)将一个 int值写入输出流,该值由四个字节组成。 |
void writeLong(long v)
将一个 long 值写入输出流,该值由八个字节组成。 |
void writeShort(int v)
将两个字节写入输出流,用它们表示参数值。 |
void writeUTF(String str)
将表示长度信息的两个字节写入输出流,后跟字符串 s 中每个字符的 UTF-8
修改版表示形式。 |
java.io.DataInput接口和java.io.DataOutput接口详解,布布扣,bubuko.com
java.io.DataInput接口和java.io.DataOutput接口详解
原文:http://www.cnblogs.com/xuepei/p/3664920.html