Most visited

Recently visited

Added in API level 1

DataOutput

public interface DataOutput

java.io.DataOutput
Known Indirect Subclasses


DataOutput接口提供将任何Java基本类型的数据转换为一系列字节并将这些字节写入二进制流。 还有一种将String转换为modified UTF-8格式并写入结果字节序列的工具。

对于该接口中写入字节的所有方法,通常情况下,如果由于某种原因无法写入字节, IOException抛出 IOException

也可以看看:

Summary

Public methods

abstract void write(byte[] b)

将数组 b所有字节写入输出流。

abstract void write(byte[] b, int off, int len)

将数组 b len字节 b写入输出流。

abstract void write(int b)

将参数 b的8个低位写入输出流。

abstract void writeBoolean(boolean v)

boolean值写入此输出流。

abstract void writeByte(int v)

将参数 v的8个低位写入输出流。

abstract void writeBytes(String s)

将一个字符串写入输出流。

abstract void writeChar(int v)

将包含两个字节的 char值写入输出流。

abstract void writeChars(String s)

将字符串 s中的每个字符写入输出流,顺序为每个字符两个字节。

abstract void writeDouble(double v)

将包含8个字节的 double值写入输出流。

abstract void writeFloat(float v)

将一个由四个字节组成的 float值写入输出流。

abstract void writeInt(int v)

将包含四个字节的 int值写入输出流。

abstract void writeLong(long v)

将包含8个字节的 long值写入输出流。

abstract void writeShort(int v)

将两个字节写入输出流以表示参数的值。

abstract void writeUTF(String s)

将两个字节的长度信息写入输出流,后面跟随字符串 s中每个字符的 modified UTF-8表示 s

Public methods

write

Added in API level 1
void write (byte[] b)

将数组b所有字节写入输出流。 如果bnull ,则引发NullPointerException 如果b.length为零,则不写入字节。 否则,首先写入字节b[0] ,然后写入b[1] ,依此类推; 写入的最后一个字节是b[b.length-1]

Parameters
b byte: the data.
Throws
IOException if an I/O error occurs.

write

Added in API level 1
void write (byte[] b, 
                int off, 
                int len)

将数组b len字节b写入输出流。 如果bnull ,则引发NullPointerException 如果off为负数,或者len为负数,或者off+len大于数组b的长度,则会抛出IndexOutOfBoundsException 如果len为零,则不写入字节。 否则,首先写入字节b[off] ,然后写入b[off+1] ,依此类推; 写入的最后一个字节是b[off+len-1]

Parameters
b byte: the data.
off int: the start offset in the data.
len int: the number of bytes to write.
Throws
IOException if an I/O error occurs.

write

Added in API level 1
void write (int b)

将参数b的8个低位写入输出流。 忽略b的24个高位。

Parameters
b int: the byte to be written.
Throws
IOException if an I/O error occurs.

writeBoolean

Added in API level 1
void writeBoolean (boolean v)

boolean值写入此输出流。 如果参数vtrue ,则写入值(byte)1 ; 如果vfalse ,则写入值(byte)0 通过此方法写入的字节可以由读取readBoolean接口的方法DataInput ,然后将返回一个boolean等于v

Parameters
v boolean: the boolean to be written.
Throws
IOException if an I/O error occurs.

writeByte

Added in API level 1
void writeByte (int v)

写入输出流参数v的八个v 忽略了v的24个高位。 (这意味着writeByte不完全一样的东西作为write为整数参数。)此方法写入的字节可以由读取readByte接口的方法DataInput ,然后将返回一个byte等于(byte)v

Parameters
v int: the byte value to be written.
Throws
IOException if an I/O error occurs.

writeBytes

Added in API level 1
void writeBytes (String s)

将一个字符串写入输出流。 对于字符串s中的每个字符,按顺序排列,将一个字节写入输出流。 如果snull ,则引发NullPointerException

如果s.length为零,则不写入字节。 否则,首先写入字符s[0] ,然后写入s[1] ,依此类推; 最后写的字符是s[s.length-1] 对于每个字符,写入一个字节,即低位字节,方法与writeByte方法完全相同。 字符串中每个字符的高8位被忽略。

Parameters
s String: the string of bytes to be written.
Throws
IOException if an I/O error occurs.

writeChar

Added in API level 1
void writeChar (int v)

将包含两个字节的char值写入输出流。 按照显示的顺序写入的字节值是:


 (byte)(0xff & (v >> 8))
 (byte)(0xff & v)
 

用这种方法写入的字节可以由读取 readChar接口的方法 DataInput ,然后将返回一个 char等于 (char)v

Parameters
v int: the char value to be written.
Throws
IOException if an I/O error occurs.

writeChars

Added in API level 1
void writeChars (String s)

将字符串s中的每个字符写入输出流,顺序为每个字符两个字节。 如果snull ,则引发NullPointerException 如果s.length为零,则不写入字符。 否则,首先写入字符s[0] ,然后写入s[1] ,依此类推; 最后写的字符是s[s.length-1] 对于每个字符,实际上写入两个字节,首先是高位字节,其方式与writeChar方法完全相同。

Parameters
s String: the string value to be written.
Throws
IOException if an I/O error occurs.

writeDouble

Added in API level 1
void writeDouble (double v)

将包含8个字节的double值写入输出流。 它这样做是因为,如果它首先将这个double值到long在完全相同的方式Double.doubleToLongBits方法,然后再写入long在完全相同的方式值writeLong方法。 用这种方法写入的字节可以由读取readDouble接口的方法DataInput ,然后将返回一个double等于v

Parameters
v double: the double value to be written.
Throws
IOException if an I/O error occurs.

writeFloat

Added in API level 1
void writeFloat (float v)

将包含四个字节的float值写入输出流。 它这样做是因为,如果它首先将这个float值到int在完全相同的方式Float.floatToIntBits方法,然后再写入int在完全相同的方式值writeInt方法。 用这种方法写入的字节可以由读取readFloat接口的方法DataInput ,然后将返回一个float等于v

Parameters
v float: the float value to be written.
Throws
IOException if an I/O error occurs.

writeInt

Added in API level 1
void writeInt (int v)

将一个由四个字节组成的int值写入输出流。 按照显示的顺序写入的字节值是:


 (byte)(0xff & (v >> 24))
 (byte)(0xff & (v >> 16))
 (byte)(0xff & (v >>    8))
 (byte)(0xff & v)
 

用这种方法写入的字节可以由读取 readInt接口的方法 DataInput ,然后将返回一个 int等于 v

Parameters
v int: the int value to be written.
Throws
IOException if an I/O error occurs.

writeLong

Added in API level 1
void writeLong (long v)

将包含8个字节的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)
 

用这种方法写入的字节可以由读取 readLong接口的方法 DataInput ,然后将返回一个 long等于 v

Parameters
v long: the long value to be written.
Throws
IOException if an I/O error occurs.

writeShort

Added in API level 1
void writeShort (int v)

将两个字节写入输出流以表示参数的值。 按照显示的顺序写入的字节值是:


 (byte)(0xff & (v >> 8))
 (byte)(0xff & v)
  

用这种方法写入的字节可以由读取 readShort接口的方法 DataInput ,然后将返回一个 short等于 (short)v

Parameters
v int: the short value to be written.
Throws
IOException if an I/O error occurs.

writeUTF

Added in API level 1
void writeUTF (String s)

将两个字节的长度信息写入输出流,后面跟随字符串s中每个字符的modified UTF-8表示s 如果snull ,则引发NullPointerException 根据字符的值,字符串s中的每个字符s被转换为一个一个,两个或三个字节的组。

如果一个字符 c\u0001\u007f的范围内,则它由一个字节表示:

(byte)c 

如果字符 c\u0000或者范围在 \u0080\u07ff ,则它由两个字节表示,按照所示顺序写入:


 (byte)(0xc0 | (0x1f & (c >> 6)))
 (byte)(0x80 | (0x3f & c))
  

如果一个字符 c\u0800uffff的范围内,则它由三个字节表示,按照所示顺序写入:


 (byte)(0xe0 | (0x0f & (c >> 12)))
 (byte)(0x80 | (0x3f & (c >>  6)))
 (byte)(0x80 | (0x3f & c))
  

首先,计算表示s所有字符所需的总字节数。 如果此数字大于65535 ,则会引发UTFDataFormatException 否则,该长度writeShort方法的方式写入输出流; 在此之后,写入字符串s中每个字符的一个,两个或三个字节的表示。

用这种方法写入的字节可以由读取 readUTF接口的方法 DataInput ,然后将返回一个 String等于 s

Parameters
s String: the string value to be written.
Throws
IOException if an I/O error occurs.

Hooray!