How to read a complete Unicode code point as String?
The javadoc of the read method states:


  Returns: The character read, as an integer in the range 0 to 65535
  (0x00-0xffff), or -1 if the end of the stream has been reached


The char primative is "a single 16-bit Unicode character. It has a minimum value of '\u0000' (or 0) and a maximum value of '\uffff' (or 65,535 inclusive)."

(emphasis mine)

It would appear that your two C-style casts are safe.