JavaTM Platform
Standard Ed. 6

java.io
接口 DataOutput

所有已知子接口:
ImageOutputStream, ObjectOutput
所有已知实现类:
DataOutputStream, FileCacheImageOutputStream, FileImageOutputStream, ImageOutputStreamImpl, MemoryCacheImageOutputStream, ObjectOutputStream, RandomAccessFile

public interface DataOutput

DataOutput 接口用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流。同时还提供了一个将 String 转换成 UTF-8 修改版格式并写入所得到的系列字节的工具。

对于此接口中写入字节的所有方法,如果由于某种原因无法写入某个字节,则抛出 IOException

从以下版本开始:
JDK1.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 中的所有字符按顺序写入输出流,每个字符用两个字节表示。
 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 中的所有字节写入输出流。如果 bnull,则抛出 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 个字节按顺序写入输出流。如果 bnull,则抛出 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 值写入输出流。如果参数 vtrue,则写入值 (byte)1;如果 vfalse,则写入值 (byte)0。此方法写入的字节可由 DataInput 接口的 readBoolean 方法读取,然后该方法将返回一个等于 vboolean 值。

参数:
v - 要写入的 boolean 值。
抛出:
IOException - 如果发生 I/O 错误。

writeByte

void writeByte(int v)
               throws IOException
将参数 v 的八个低位写入输出流。忽略 v 的 24 个高位。(这意味着 writeByte 的作用与使用整数做参数的 write 完全相同。)此方法写入的字节可由 DataInput 接口的 readByte 方法读取,然后该方法将返回一个等于 (byte)vbyte 值。

参数:
v - 要写入的字节值。
抛出:
IOException - 如果发生 I/O 错误。

writeShort

void writeShort(int v)
                throws IOException
将两个字节写入输出流,用它们表示参数值。要写入的字节值(按顺序显示)是:


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

此方法写入的字节可由 DataInput 接口的 readShort 方法读取,然后该方法将返回一个等于 (short)vshort 值。

参数:
v - 要写入的 short 值。
抛出:
IOException - 如果发生 I/O 错误。

writeChar

void writeChar(int v)
               throws IOException
将一个 char 值写入输出流,该值由两个字节组成。要写入的字节值(按顺序显示)是:


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

此方法写入的字节可由 DataInput 接口的 readChar 方法读取,然后该方法将返回一个等于 (char)vchar 值。

参数:
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 方法读取,然后该方法将返回一个等于 vint 值。

参数:
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 方法读取,然后该方法将返回一个等于 vlong 值。

参数:
v - 要写入的 long 值。
抛出:
IOException - 如果发生 I/O 错误。

writeFloat

void writeFloat(float v)
                throws IOException
将一个 float 值写入输出流,该值由四个字节组成。实现这一点的方式是:首先使用与 Float.floatToIntBits 方法完全相同的方式将此 float 值转换为一个 int 值,然后使用与 writeInt 方法完全相同的方式写入该 int 值。此方法写入的字节可由 DataInput 接口的 readFloat 方法读取,然后该方法将返回一个等于 vfloat 值。

参数:
v - 要写入的 float 值。
抛出:
IOException - 如果发生 I/O 错误。

writeDouble

void writeDouble(double v)
                 throws IOException
将一个 double 值写入输出流,该值由八个字节组成。实现这一点的方式是:首先使用与 Double.doubleToLongBits 方法相同的方式将此 double 值转换为一个 long 值,然后使用与 writeLong 方法完全相同的方式写入该 long 值。此方法写入的字节可由 DataInput 接口的 readDouble 方法读取,然后该方法将返回一个等于 vdouble 值。

参数:
v - 要写入的 double 值。
抛出:
IOException - 如果发生 I/O 错误。

writeBytes

void writeBytes(String s)
                throws IOException
将一个字符串写入输出流。字符串 s 中的每一个字符被依次写入输出流,每个字符用一个字节表示。如果 snull,则抛出 NullPointerException

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

参数:
s - 要写入的字节字符串。
抛出:
IOException - 如果发生 I/O 错误。

writeChars

void writeChars(String s)
                throws IOException
将字符串 s 中的所有字符按顺序写入输出流,每个字符用两个字节表示。如果 snull,则抛出 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 修改版表示形式。如果 snull,则抛出 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 方法读取,然后该方法将返回一个等于 sString 值。

参数:
s - 要写入的字符串值。
抛出:
IOException - 如果发生 I/O 错误。

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策