将表示长度信息的两个字节按网络字节顺序写入输出流,后跟字符串 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 - 指定者:
- 接口
imageoutputstream 中的 writeutf
- 参数:
s - 一个 string,它包含要写入的值。
- 抛出:
utfdataformatexception - 如果 s 的 utf-8 修改版表示形式要求的字节数大于 65536。
ioexception - 如果发生 i/o 错误。