Stai facendo una cosa profondamente errata: se scrivi usando un ObjectOutputStream, dovrai leggere obbligatoriamente con ObjectInputStream.

BufferedReader serve a leggere dati testuali... quello che tu scrivi nello stream non è un dato testuale, ma la serializzazione i un oggetto Java. Il fatto che tu riesca a leggere il contenuto di quello che scrivi è solo un puro caso (la classe String, infatti, memorizza il testo in un array di char, che sono praticamente in chiaro... quella t davanti al testo, infatti, indica che l'oggetto letto è un array)... ma se provavi con degli oggetti più complessi non avresti letto niente di più di qualche carattere incomprensibile.


Ciao.