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 ....
Come ti è stato detto, per prima cosa decidi il formato in cui scrivere il file, per poi preoccuparti sul come caricarlo.