java.io
接口 DataOutput
- 所有已知子接口:
- ImageOutputStream, ObjectOutput
- 所有已知实现类:
- DataOutputStream, FileCacheImageOutputStream, FileImageOutputStream, ImageOutputStreamImpl, MemoryCacheImageOutputStream, ObjectOutputStream, RandomAccessFile
public interface DataOutput
DataOutput 接口用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流。同时还提供了一个将 String 转换成 UTF-8 修改版格式并写入所得到的系列字节的工具。
对于此接口中写入字节的所有方法,如果由于某种原因无法写入某个字节,则抛出 IOException。
- 从以下版本开始:
- JDK1.0
| 方法摘要 | |
|---|---|
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 修改版表示形式。 |
| 方法详细信息 |
|---|
write
void write(int b)throws IOException
- 将参数
b的八个低位写入输出流。忽略b的 24 个高位。 - 参数:
b- 要写入的字节。 抛出:IOException- 如果发生 I/O 错误。
write
void write(byte[] b)throws IOException
- 将数组
b中的所有字节写入输出流。如果b为null,则抛出NullPointerException。如果b.length为零,则不写入字节。否则,首先写入字节b[0],然后写入字节b[1],依此类推;最后一个写入字节是b[b.length-1]。 - 参数:
b- 数据。 抛出:IOException- 如果发生 I/O 错误。
write
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 错误。
writeBoolean
void writeBoolean(boolean v)throws IOException
- 将一个
boolean值写入输出流。如果参数v为true,则写入值(byte)1;如果v为false,则写入值(byte)0。此方法写入的字节可由DataInput接口的readBoolean方法读取,然后该方法将返回一个等于v的boolean值。 - 参数:
v- 要写入的 boolean 值。 抛出:IOException- 如果发生 I/O 错误。
writeByte
void writeByte(int v)throws IOException
- 将参数
v的八个低位写入输出流。忽略v的 24 个高位。(这意味着writeByte的作用与使用整数做参数的write完全相同。)此方法写入的字节可由DataInput接口的readByte方法读取,然后该方法将返回一个等于(byte)v的byte值。 - 参数:
v- 要写入的字节值。 抛出:IOException- 如果发生 I/O 错误。
writeShort
void writeShort(int v)throws IOException
- 将两个字节写入输出流,用它们表示参数值。要写入的字节值(按顺序显示)是:
(byte)(0xff & (v >> 8))(byte)(0xff & v)此方法写入的字节可由
DataInput接口的readShort方法读取,然后该方法将返回一个等于(short)v的short值。 - 参数:
v- 要写入的short值。 抛出:IOException- 如果发生 I/O 错误。
writeChar
void writeChar(int v)throws IOException
- 将一个
char值写入输出流,该值由两个字节组成。要写入的字节值(按顺序显示)是:(byte)(0xff & (v >> 8))(byte)(0xff & v)此方法写入的字节可由
DataInput接口的readChar方法读取,然后该方法将返回一个等于(char)v的char值。 - 参数:
v- 要写入的char值。 抛出:IOException- 如果发生 I/O 错误。
writeInt
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 错误。
writeLong
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 错误。
writeFloat
void writeFloat(float v)throws IOException
- 将一个
float值写入输出流,该值由四个字节组成。实现这一点的方式是:首先使用与Float.floatToIntBits方法完全相同的方式将此float值转换为一个int值,然后使用与writeInt方法完全相同的方式写入该int值。此方法写入的字节可由DataInput接口的readFloat方法读取,然后该方法将返回一个等于v的float值。 - 参数:
v- 要写入的float值。 抛出:IOException- 如果发生 I/O 错误。
writeDouble
void writeDouble(double v)throws IOException
- 将一个
double值写入输出流,该值由八个字节组成。实现这一点的方式是:首先使用与Double.doubleToLongBits方法相同的方式将此double值转换为一个long值,然后使用与writeLong方法完全相同的方式写入该long值。此方法写入的字节可由DataInput接口的readDouble方法读取,然后该方法将返回一个等于v的double值。 - 参数:
v- 要写入的double值。 抛出:IOException- 如果发生 I/O 错误。
writeBytes
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 错误。
writeChars
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 错误。
writeUTF
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 错误。