DataOutput (Java Platform SE 8 ) (original) (raw)

Writes two bytes of length information to the output stream, followed by themodified UTF-8 representation of every character in the string s. If s is null, a NullPointerException is thrown. Each character in the string s is converted to a group of one, two, or three bytes, depending on the value of the character.

If a character c is in the range \u0001 through\u007f, it is represented by one byte:

(byte)c

If a character c is \u0000 or is in the range \u0080 through \u07ff, then it is represented by two bytes, to be written in the order shown:


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

If a characterc is in the range \u0800 through uffff, then it is represented by three bytes, to be written in the order shown:


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

First, the total number of bytes needed to represent all the characters of s is calculated. If this number is larger than65535, then a UTFDataFormatException is thrown. Otherwise, this length is written to the output stream in exactly the manner of the writeShort method; after this, the one-, two-, or three-byte representation of each character in the string s is written.

The bytes written by this method may be read by the readUTF method of interfaceDataInput , which will then return a String equal to s.