Allora, per quanto riguarda la gestione manuale che avevo fatto a suo tempo (stiamo parlando di una decina di anni fa) era una cosa molto terra terra che mi serviva solo per la lettura dei file (non per la scrittura... il file INI veniva compilato a mano da chi poi installava l'applicazione). Si trattava di una semplice lettura del file riga per riga e interpretazione brutale del contenuto (niente che valga la pena di essere riesumato).
Dato che la cosa mi ha smosso i ricordi, ho deciso di scrivere una piccola libreria, piuttosto banale, per la gestione dei file INI con i contesti.
Se hai voglia, puoi dare un'occhiata ai sorgenti qui:
https://github.com/LeleFT/INIFile
L'ho scritta al volo, è banale e può essere facilmente migliorata.
C'è sia la JavaDoc, che una classe di test.
La cosa "bella" è che l'ordine dei contesti viene mantenuto (quindi, se leggo un file INI che contiene dei contesti in un certo ordine, questo viene mantenuto dal metodo getContexts() e, viceversa, se sto creando un file INI da zero, l'ordine di inserimento dei contesti viene replicato nel file).
Non viene mantenuto l'ordine di inserimento delle varie voci di configurazione per ciascun contesto... mi sembrava non necessario... ma si può pensarci su.
Ciao.