writeUTF ha un formato ben preciso, prima della stringa (in encoding UTF-8 "modificato", vedi javadoc), scrive 2 byte che rappresentano un short che indica il numero di byte (non il numero di caratteri) che seguono.
Il tuo approccio, in generale, non mi sembra comunque molto appropriato.