public char readChar() throws IOException {
        int byte1 = in.read();
        int byte2 = in.read();

        if (byte2 < 0) {
            throw new EOFException();
        }

        return (char) (((byte2 << 24) >>> 16) | ((byte1 << 24) >>> 24));
    }
public char readChar ( ) throws IOException { int byte1 = in . read ( ) ; int byte2 = in . read ( ) ; if ( byte2 < 0 ) { throw new EOFException ( ) ; } return ( char ) ( ( ( byte2 << 24 ) > > > 16 ) | ( ( byte1 << 24 ) > > > 24 ) ) ; }
Reads a two byte Unicode {@code char} from the underlying
input stream in little endian order, low byte first.

@return the int value of the unsigned short read.
@throws EOFException if the end of the underlying input stream
has been reached
@throws IOException  if the underlying stream throws an IOException.