返回介绍

java.io 接口 DataOutput

发布于 2019-10-04 09:50:43 字数 12603 浏览 909 评论 0 收藏 0

所有已知子接口:
ObjectOutput
所有已知实现类:
DataOutputStream, ObjectOutputStream, RandomAccessFile

public interface DataOutput

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

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

从以下版本开始:
JDK1.0
另请参见:
DataInput , DataOutputStream

方法摘要
voidwrite(byte[]b)

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

voidwrite(byte[]b, intoff, intlen)

将数组 b 中的 len 个字节按顺序写入输出流。

voidwrite(intb)

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

voidwriteBoolean(booleanv)

将一个 boolean 值写入输出流。

voidwriteByte(intv)

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

voidwriteBytes(Strings)

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

voidwriteChar(intv)

将一个 char 值写入输出流,该值由两个字节组成。

voidwriteChars(Strings)

将字符串 s 中的所有字符按顺序写入输出流,每个字符用两个字节表示。

voidwriteDouble(doublev)

将一个 double 值写入输出流,该值由八个字节组成。

voidwriteFloat(floatv)

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

voidwriteInt(intv)

将一个 int 值写入输出流,该值由四个字节组成。

voidwriteLong(longv)

将一个 long 值写入输出流,该值由八个字节组成。

voidwriteShort(intv)

将两个字节写入输出流,用它们表示参数值。

voidwriteUTF(Stringstr)

将表示长度信息的两个字节写入输出流,后跟字符串 s 中每个字符的 UTF-8 修改版表示形式。

方法详细信息

write

void write(intb)
           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,
           intoff,
           intlen)
           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(booleanv)
                  throws IOException
将一个 boolean 值写入输出流。如果参数 vtrue ,则写入值 (byte)1 ;如果 vfalse ,则写入值 (byte)0 。此方法写入的字节可由 DataInput 接口的 readBoolean 方法读取,然后该方法将返回一个等于 vboolean 值。
参数:
v - 要写入的 boolean 值。
抛出:
IOException - 如果发生 I/O 错误。

writeByte

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

writeShort

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

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

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

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

writeChar

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

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

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

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

writeInt

void writeInt(intv)
              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(longv)
               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(floatv)
                throws IOException
将一个 float 值写入输出流,该值由四个字节组成。实现这一点的方式是:首先使用与 Float.floatToIntBits 方法完全相同的方式将此 float 值转换为一个 int 值,然后使用与 writeInt 方法完全相同的方式写入该 int 值。此方法写入的字节可由 DataInput 接口的 readFloat 方法读取,然后该方法将返回一个等于 vfloat 值。
参数:
v - 要写入的 float 值。
抛出:
IOException - 如果发生 I/O 错误。

writeDouble

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

writeBytes

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

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

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

writeChars

void writeChars(Strings)
                throws IOException
将字符串 s 中的所有字符按顺序写入输出流,每个字符用两个字节表示。如果 snull ,则抛出 NullPointerException 。如果 s.length 为零,则不写入字符。否则,首先写入字符 s[0] ,然后写入字符 s[1] ,依此类推;最后一个写入字符是 s[s.length-1] 。使用与 writeChar 方法完全相同的方法为每个字符实际写入两个字节,先使用高位字节。
参数:
s - 要写入的字符串值。
抛出:
IOException - 如果发生 I/O 错误。

writeUTF

void writeUTF(Stringstr)
              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 值。

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文