public interface DataOutput
DataOutput 接口用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流。同时还提供了一个将 String 转换成 UTF-8 修改版格式并写入所得到的系列字节的工具。
对于此接口中写入字节的所有方法,如果由于某种原因无法写入某个字节,则抛出 IOException。
DataInput,
DataOutputStream
| 方法摘要 | |
|---|---|
void |
write(byte[] b) 将数组 b 中的所有字节写入输出流。 |
void |
write(byte[] b, int off, int len) 将数组 b 中的 len 个字节按顺序写入输出流。 |
void |
write(int b) 将参数 b 的八个低位写入输出流。 |
void |
writeBoolean(boolean v) 将一个 boolean 值写入输出流。 |
void |
writeByte(int v) 将参数 v 的八个低位写入输出流。 |
void |
writeBytes(String s) 将一个字符串写入输出流。 |
void |
writeChar(int v) 将一个 char 值写入输出流,该值由两个字节组成。 |
void |
writeChars(String s) 将字符串 s 中的所有字符按顺序写入输出流,每个字符用两个字节表示。 |
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 s) 将表示长度信息的两个字节写入输出流,后跟字符串 s 中每个字符的 UTF-8 修改版表示形式。 |
| 方法详细信息 |
|---|
void write(int b)
throws IOException
b 的八个低位写入输出流。忽略
b 的 24 个高位。
b - 要写入的字节。
IOException - 如果发生 I/O 错误。
void write(byte[] b)
throws IOException
b 中的所有字节写入输出流。如果
b 为
null,则抛出
NullPointerException。如果
b.length 为零,则不写入字节。否则,首先写入字节
b[0],然后写入字节
b[1],依此类推;最后一个写入字节是
b[b.length-1]。
b - 数据。
IOException - 如果发生 I/O 错误。
void write(byte[] b,
int off,
int len)
throws IOException
b 中的
len 个字节按顺序写入输出流。如果
b 为
null,则抛出
NullPointerException。如果
off 为负,或
len 为负,抑或
off+len 大于数组
b 的长度,则抛出
IndexOutOfBoundsException。如果
len 为零,则不写入字节。否则,首先写入字节
b[off],然后写入字节
b[off+1],依此类推;最后一个写入字节是
b[off+len-1]。
b - 数据。
off - 数据中的起始偏移量。
len - 要写入的字节数。
IOException - 如果发生 I/O 错误。
void writeBoolean(boolean v)
throws IOException
boolean 值写入输出流。如果参数
v 为
true,则写入值
(byte)1;如果
v 为
false,则写入值
(byte)0。此方法写入的字节可由
DataInput 接口的
readBoolean 方法读取,然后该方法将返回一个等于
v 的
boolean 值。
v - 要写入的 boolean 值。
IOException - 如果发生 I/O 错误。
void writeByte(int v)
throws IOException
v 的八个低位写入输出流。忽略
v 的 24 个高位。(这意味着
writeByte 的作用与使用整数做参数的
write 完全相同。)此方法写入的字节可由
DataInput 接口的
readByte 方法读取,然后该方法将返回一个等于
(byte)v 的
byte 值。
v - 要写入的字节值。
IOException - 如果发生 I/O 错误。
void writeShort(int v)
throws IOException
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
此方法写入的字节可由 DataInput 接口的 readShort 方法读取,然后该方法将返回一个等于 (short)v 的 short 值。
v - 要写入的
short 值。
IOException - 如果发生 I/O 错误。
void writeChar(int v)
throws IOException
char 值写入输出流,该值由两个字节组成。要写入的字节值(按顺序显示)是:
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
此方法写入的字节可由 DataInput 接口的 readChar 方法读取,然后该方法将返回一个等于 (char)v 的 char 值。
v - 要写入的
char 值。
IOException - 如果发生 I/O 错误。
void writeInt(int v)
throws IOException
int 值写入输出流,该值由四个字节组成。要写入的字节值(按顺序显示)是:
(byte)(0xff & (v >> 24))
(byte)(0xff & (v >> 16))
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
此方法写入的字节可由 DataInput 接口的 readInt 方法读取,然后该方法将返回一个等于 v 的 int 值。
v - 要写入的
int 值。
IOException - 如果发生 I/O 错误。
void writeLong(long v)
throws IOException
long 值写入输出流,该值由八个字节组成。要写入的字节值(按顺序显示)是:
(byte)(0xff & (v >> 56))
(byte)(0xff & (v >> 48))
(byte)(0xff & (v >> 40))
(byte)(0xff & (v >> 32))
(byte)(0xff & (v >> 24))
(byte)(0xff & (v >> 16))
(byte)(0xff & (v >> 8))
(byte)(0xff & v)
此方法写入的字节可由 DataInput 接口的 readLong 方法读取,然后该方法将返回一个等于 v 的 long 值。
v - 要写入的
long 值。
IOException - 如果发生 I/O 错误。
void writeFloat(float v)
throws IOException
float 值写入输出流,该值由四个字节组成。实现这一点的方式是:首先使用与
Float.floatToIntBits 方法完全相同的方式将此
float 值转换为一个
int 值,然后使用与
writeInt 方法完全相同的方式写入该
int 值。此方法写入的字节可由
DataInput 接口的
readFloat 方法读取,然后该方法将返回一个等于
v 的
float 值。
v - 要写入的
float 值。
IOException - 如果发生 I/O 错误。
void writeDouble(double v)
throws IOException
double 值写入输出流,该值由八个字节组成。实现这一点的方式是:首先使用与
Double.doubleToLongBits 方法相同的方式将此
double 值转换为一个
long 值,然后使用与
writeLong 方法完全相同的方式写入该
long 值。此方法写入的字节可由
DataInput 接口的
readDouble 方法读取,然后该方法将返回一个等于
v 的
double 值。
v - 要写入的
double 值。
IOException - 如果发生 I/O 错误。
void writeBytes(String s) throws IOException
s 中的每一个字符被依次写入输出流,每个字符用一个字节表示。如果
s 为
null,则抛出
NullPointerException。
如果 s.length 为零,则不写入字节。否则,首先写入字符 s[0],然后写入字符 s[1],依此类推;最后一个写入字符是 s[s.length-1]。使用与 writeByte 方法完全相同的方法为每个字符写入一个低位字节。忽略字符串中每个字符的八个高位。
s - 要写入的字节字符串。
IOException - 如果发生 I/O 错误。
void writeChars(String s) throws IOException
s 中的所有字符按顺序写入输出流,每个字符用两个字节表示。如果
s 为
null,则抛出
NullPointerException。如果
s.length 为零,则不写入字符。否则,首先写入字符
s[0],然后写入字符
s[1],依此类推;最后一个写入字符是
s[s.length-1]。使用与
writeChar 方法完全相同的方法为每个字符实际写入两个字节,先使用高位字节。
s - 要写入的字符串值。
IOException - 如果发生 I/O 错误。
void writeUTF(String s) throws IOException
s 中每个字符的
UTF-8 修改版表示形式。如果
s 为
null,则抛出
NullPointerException。根据字符的值,将字符串
s 中每个字符转换成一个字节、两个字节或三个字节的字节组。
如果字符 c 在 \u0001 到 \u007f 的范围内,则用一个字节表示:
(byte)c
如果字符 c 是 \u0000 或者它在 \u0080 到 \u07ff 的范围内,则用两个字节表示,写入顺序如下:
(byte)(0xc0 | (0x1f & (c >> 6)))
(byte)(0x80 | (0x3f & c))
如果字符 c 在 \u0800 到 \uffff 的范围内,则用三个字节表示,写入顺序如下:
(byte)(0xe0 | (0x0f & (c >> 12)))
(byte)(0x80 | (0x3f & (c >> 6)))
(byte)(0x80 | (0x3f & c))
首先,要计算表示 s 中所有字符所需的字节总数。如果总数大于 65535,则抛出 UTFDataFormatException。否则,使用与 writeShort 方法完全相同的方式将此长度写入输出流,然后写入字符串 s 中所有字符的 1 字节、2 字节或 3 字节表示形式。
此方法写入的字节可由 DataInput 接口的 readUTF 方法读取,然后该方法将返回一个等于 s 的 String 值。
s - 要写入的字符串值。
IOException - 如果发生 I/O 错误。