Se il tuo file non ha una lunghezza record fissa, allora non ha nemmeno senso pensare di usare RandomAccessFile.
Semplicemente perchè, comunque, dovresti rileggerti tutto il file nel momento in cui poi dovrai ri-scriverlo per apportare una modifica.

Innanzitutto non ho capito se devi obbligatoriamente usare un singolo file per tutti i dati o se puoi, quantomento, separare ciascun tipo di dato in un file a se stante. Ad esempio, nel tuo primo messaggio parli di tabella "utenti" e tabella "eventi". Hai facoltà di dividere le due informazioni su due file distinti (Esempio: file utenti.txt per gli utenti e file eventi.txt per gli eventi) o ti è richiesto obbligatoriamente di usare un solo file?

L'idea di fondo, comunque, è di leggere l'intero file una sola volta (ad esempio, all'inizio dell'esecuzione) e mantenere in memoria le informazioni usando delle apposite classi che modellano i dati... qualunque tipo di modifica (aggiunta, modifica, cancellazione) la fai in memoria e alla fine scrivi lo stato "attuale" nel nuovo file (eventualmente andando in sovrascrittura).


Ciao.