Sì ... un pochino "imbarazzante", perché come ti ho detto prima, f_in.read(libro[i].Titolo.getBytes()); NON ha assolutamente alcun senso e non fa minimamente quello che (forse) ti stavi aspettando.
Stai gestendo file "di testo", domanda: devi per forza usare FileOutputStream/FileInputStream? Perché non sono effettivamente i più appropriati per file di testo ....