Per la tua esigenza, ti consiglio di usare la classe ObjectOutputStream.
Questa classe ti consente di salvare IL TUO OGGETTO in un file e di poterlo recuperare in seguito tramite una lettura del file, senza perdita di informazioni (nemmeno con strutture dati particolari come i grafi circolari).
Il file risultante non è un file di testo leggibile, ma un file in bytecode interpretabile da Java.
E' importante che tu costruisca la tua classe aggiungendo l'implementazione di Serializable (java.io.Serializable) come mostrato nell'esempio seguente:

codice:
public class Libro  implements Serializable  {
   ... // costruttore, metodi, variabili, tutto come prima
}
Ora il tuo oggetto può essere salvato su file:

codice:
String filename = "nome_file";
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream oos = new ObjectOutputStream(fos);

// Ho un oggetto Libro
Libro l = new Libro(...);

// Ora salvo il mio oggetto libro sul file
oos.writeObject(l);

// Se ora voglio recuperarlo dal file:
FileInputStream fis = new FileInputStream(nomefile);
ObjectInputStream ois = new ObjectInputStream(fis);

// Leggo un oggetto dal file
Libro l = (Libro) ois.readObject();
Se ti servono ulteriori informazioni puoi sempre chiedere (e comunque esiste sempre la salvezza: http://java.sun.com )


Ciao.