Allora al caricamento del programma ti leggi tutto il file delle associazioni e te le tieni in memoria in una HashMap<String, Collection<String>> in cui associ a ogni file l'elenco di tutti i file informazioni relativi.
Alla chiusura del programma (o ogni volta che ti serve) riversi la HashMap nel file delle associazioni, e il gioco è fatto senza problemi di prestazioni
Di certo però non puoi pensare di tenere in memoria le info di tutti i file : supponendo che siano migliaia rischi di andare out of memory!!!!
ciaooo