将表示长度信息的两个字节按网络字节顺序写入输出流,后跟字符串 s
中每个字符的 utf-8 修改版表示形式。如果 s
为 null
,则抛出 nullpointerexception
。根据字符的值,将字符串 s
中每个字符转换成一个字节、两个字节或三个字节的字节组。
如果字符 c
在 u0001
到 u007f
的范围内,则用一个字节表示:
(byte)(b)
如果字符 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 字节表示形式。
忽略当前字节顺序设置。
如果流中的位偏移量不为零,则首先将当前字节的余项用 0 填充并将其写出。写出后位偏移量将为 0。
注:使用标准 utf-8 图像格式的实现不应该使用此方法,因为此处使用的 utf-8 修改版与标准 utf-8 不兼容。
- 指定者:
- 接口
dataoutput
中的 writeutf
- 参数:
s
- 一个 string
,它包含要写入的值。
- 抛出:
nullpointerexception
- 如果 s
为 null
。
utfdataformatexception
- 如果 s
的 utf-8 修改版表示形式要求的字节数大于 65536。
ioexception
- 如果发生 i/o 错误。