Domanda: devi per forza usare solo FileReader e solo il suo read() che legge 1 carattere per volta? C'è un qualche motivo (es. "didattico") per cui non puoi usare altro?
Perché se non c'è un motivo specifico ... allora così ti stai complicando molto, davvero molto, la vita!