-
- All Known Subinterfaces:
-
ImageOutputStream
,ObjectOutput
- 所有已知实现类:
-
DataOutputStream
,FileCacheImageOutputStream
,FileImageOutputStream
,ImageOutputStreamImpl
,MemoryCacheImageOutputStream
,ObjectOutputStream
,RandomAccessFile
public interface DataOutput
DataOutput
接口用于将来自任何Java基元类型的数据转换为一系列字节,并将这些字节写入二进制流。 还有一种工具可以将String
转换为modified UTF-8格式并写入结果字节序列。对于此接口中写入字节的所有方法,通常如果由于任何原因无法写入某个字节,则抛出
IOException
。- 从以下版本开始:
- 1.0
- 另请参见:
-
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
中的每个字符按s
写入输出流,每个字符两个字节。void
writeDouble(double v)
将double
值写入输出流,该值由8个字节组成。void
writeFloat(float v)
将float
值写入输出流,该值由四个字节组成。void
writeInt(int v)
将int
值写入输出流,该值由四个字节组成。void
writeLong(long v)
将long
值写入输出流,该值由8个字节组成。void
writeShort(int v)
将两个字节写入输出流以表示参数的值。void
writeUTF(String s)
将两个字节的长度信息写入输出流,然后是字符串s
中每个字符的 modified 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
方法读取,然后返回boolean
等于v
。- 参数
-
v
- 要写入的布尔值。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeByte
void writeByte(int v) throws IOException
将参数v
的八个低位写入输出流。v
的24个高位被忽略。 (这意味着writeByte
不完全一样的东西作为write
为整数参数。)此方法写入的字节可以由读取readByte
接口的方法DataInput
,然后将返回一个byte
等于(byte)v
。- 参数
-
v
- 要写入的字节值。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeShort
void writeShort(int v) throws IOException
将两个字节写入输出流以表示参数的值。 按所示顺序写入的字节值为:(byte)(0xff & (v >> 8)) (byte)(0xff & v)
该方法写入的字节可以通过接口
DataInput
的readShort
方法读取,然后返回short
等于(short)v
。- 参数
-
v
- 要写入的short
值。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeChar
void writeChar(int v) throws IOException
将char
值写入输出流,该值由两个字节组成。 按所示顺序写入的字节值为:(byte)(0xff & (v >> 8)) (byte)(0xff & v)
该方法写入的字节可以通过接口
DataInput
的readChar
方法读取,然后返回char
等于(char)v
。- 参数
-
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
方法读取,然后返回int
等于v
。- 参数
-
v
- 要写入的值int
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeLong
void writeLong(long v) throws IOException
将long
值写入输出流,该值由8个字节组成。 按所示顺序写入的字节值为:(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
方法读取,然后返回long
等于v
。- 参数
-
v
- 要写入的值long
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeFloat
void writeFloat(float v) throws IOException
将float
值写入输出流,该值由四个字节组成。 它这样做是因为,如果它首先将这个float
值到int
在完全相同的方式Float.floatToIntBits
方法,然后再写入int
在完全相同的方式值writeInt
方法。 由该方法写入的字节可以由接口DataInput
的readFloat
方法读取,然后将返回float
等于v
。- 参数
-
v
- 要写入的值float
。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeDouble
void writeDouble(double v) throws IOException
将double
值写入输出流,该值由8个字节组成。 它这样做是因为,如果它首先将这个double
值到long
在完全相同的方式Double.doubleToLongBits
方法,然后再写入long
在完全相同的方式值writeLong
方法。 通过该方法写入的字节可以通过接口DataInput
的readDouble
方法读取,然后返回double
等于v
。- 参数
-
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
方法完全相同。 字符串中每个字符的高位8位被忽略。- 参数
-
s
- 要写入的字节串。 - 异常
-
IOException
- 如果发生I / O错误。
-
writeChars
void writeChars(String s) throws IOException
将字符串s
中的每个字符按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
中每个字符的modified 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
的每个字符的一个,两个或三个字节的表示。由该方法写入的字节可以由接口
DataInput
的readUTF
方法读取,然后将返回String
等于s
。- 参数
-
s
- 要写入的字符串值。 - 异常
-
IOException
- 如果发生I / O错误。
-
-