Ini4j e IniEditor: Leer fichero INI con Java
Después de mucho tiempo, voy a intentar retomar el blog.Â
En este post, voy a proponer dos alternativas para manipular ficheros INI de Windows.Â
Las alternativas que he encontrado son ini4j e iniEditor.
Son dos librerias que de forma sencilla nos permiter leer, modificar y crear ficheros INI. Para ello, he realizado la lectura del mismo fichero con cada una de las dos librerias.  El fichero que vamos a leer es el siguiente:Â
| [seccion1]entrada1 = valor1
entrada2 = valor2 entrada3 = valor67 …………… |
En primer lugar vamos a utilizar la librerÃa ini4j:Â
| package es.fuenteperez.ini4j.main;import java.io.FileReader;
import org.ini4j.Ini; public class MainIni4J {Â Â Â Â Â Â Â Â Â Â Â public static void main(String[] args) throws Exception { String filename = “ejemplo.ini”; Ini ini = new Ini(new FileReader(filename)); //Recuperar todas las secciones del fichero .ini for(Ini.Section section : ini.values()){ //Obtener las entradas x cada una de las secciones System.out.println(“[” + section.getName() + “]”); for(String option : section.keySet()){ System.out.println(option + ” = “ + section.fetch(option)); } System.out.println(); } //Recuperar las entradas de las seccion entradaX for(String key : ini.get(“entradaX”).keySet()){ System.out.println(“entradaX/” + key + ” = “ +ini.get(“entradaX”).fetch(key)); } } } |
Como podemos observar basta con pasar el fichero al constructor de la clase org.ini4j.Ini, y llamar al método values() para recuperar todas las secciones (org.ini4j.Ini.Section) del fichero INI ([sección]).
A partir de las secciones podemos obtener las opciones y sus valores. Para recuperar las opciones debemos llamar al metodo keySet() de cada una de las secciones, que retorna un Set<String>.
Y por ultimo recuperamos el valor de cada una de las opciones con el metodo fetch(opcion) que retorna un String. Vamos a realizar el mismo ejemplo utilizando la librerÃa IniEditor.
| package es.fuenteperez.inieditor.main;import java.util.List;
import ch.ubique.inieditor.IniEditor; public class MainIniEditor { public static void main(String[] args) throws Exception { IniEditor iniEditor = new IniEditor(); iniEditor.load(“ejemplo.ini”); List<String> secciones = iniEditor.sectionNames(); for (String seccion : secciones) { System.out.println(“Sección: “ + seccion); List<String> opciones = iniEditor.optionNames(seccion); for (String opcion : opciones) { System.out.println(“\topción: “ + opcion + ” valor: “ + iniEditor.get(seccion,opcion)); } } } } |
Para indicar el fichero que queremos leer, existe el método load(). Para recuperar las secciones esta el metodo sectionNames(), que retorna un List<String>.
A partir de este colección de String, recuperamos las opciones con el método optionNames(sección). Con las opciones obtenidas ya podemos recuperar el valor de cada una de ellas. Para esto tenemos el método get(sección, opción) que retorna un String con el valor de la opción.
Como podéis observar la lectura de ficheros INI con ambas librerÃas es muy similar.
Os dejo el código fuente de ambas pruebas en el siguiente link:Â
http://www.fuenteperez.es/resources/readIniTest.zip
Espero que os sirva de ayuda.
Salu2.


