Penso che potresti risolvere serializzando il tuo Grafo: java.io.Serializable
Quindi, a run-time crei/aggiorni i tuoi oggetti Grafo, che andrai a scrivere su file solo quando "hai finito il tuo lavoro".
In questo modo dovresti leggere/scrivere i dati una sola volta.