Aprende a trabajar con archivos INI (de configuración) en Java.

Cómo leer (analizar) y escribir en archivos INI fácilmente en Java

Los archivos de configuración en formato INI le permiten al usuario modificar aspectos básicos de la aplicación dinámicamente a través de un archivo. En este artículo te mostraremos como usar la libreria Ini4j para leer y trabajar este tipo de archivo en Java.

1. Incluir libreria Ini4j

Java por defecto no ofrece ningun método integrado o una funcionalidad similar para leer este tipo de archivos INI, en vez de eso tendrás que usar una librería/paquete de terceros. En este tutorial, usaremos la librería Ini4j. La libreria Ini4j es una sencilla API de Java para manipular archivos de configuración en Windows con el formato .ini. Adicionalmente, la libreria incluye una implementación de preferencias de Java basado en un archivo de dicho tipo.

Para trabajar con esta libreria puedes o descargar el archivo jar del paquete del repositorio en maven e incluyela manualmente en tu proyecto. Si tu proyecto usa maven, podrás editar el archivo pom.xml y añadir la dependencia:

<!-- https://mvnrepository.com/artifact/org.ini4j/ini4j -->
<dependency>
    <groupId>org.ini4j</groupId>
    <artifactId>ini4j</artifactId>
    <version>0.5.4</version>
</dependency>

Para más información acerca de este paquete, por favor visita el repositorio oficial en Maven aquí o la página oficial. Despues de incluir la librería, podrás importar el paquete con import org.ini4j.*; en tu código.

2. Leer información desde un archivo ini

Asumiendo que tenemos un archivo ini (myinifile.ini) con el siguiente contenido:

; Last modified 1 January 2019 by John Doe
; Example of INI File for Java
; myinifile.ini
[owner]
name=John Doe
organization=Acme Widgets Inc.
age=24
height=176

[database]
server=192.0.2.62     
port=143
file="payroll.dat"

Es bastante sencillo obtener valores usando la interfaz de Ini4j. Básicamente necesitarás instanciar la clase Wini que espera como primer argumento un archivo (de la clase File) con el directorio del archivo con el que quieres trabajar, el objeto retornado te permitirá interactuar con la API de la librería, haciendolo bastante sencillo para obtener valores de este.

El método que necesitas usar del objeto es el método get, que espera hasta 3 argumentos: 

  • El nombre de la sección de la que quieres obtener el valor.
  • El nombre de la propiedad dentro de la sección seleccionada.
  • El tipo de valor que debería obtenerse (aplica solamente para valores primitivos, si no se indica alguno, se retorna el texto).

Por ejemplo:

package com.ourcodeworld.mavensandbox;

// Importar clases requeridas
import java.io.File;
import org.ini4j.*;

/**
 * Ejemplo básico de como usar la librería Ini4j.
 * 
 * @author Carlos Delgado <dev@ourcodeworld.com>
 */
public class Index {
    
    public static void main(String[] args){
        try{
            Wini ini = new Wini(new File("C:\\Users\\sdkca\\Desktop\\myinifile.ini"));
            int age = ini.get("owner", "age", int.class);
            double height = ini.get("owner", "height", double.class);
            String server = ini.get("database", "server");
            
            
            System.out.print("Edad: " + age + "\n");
            System.out.print("Altura: " + height + "\n");
            System.out.print("IP Servidor: " + server + "\n");
        // Para atrapar cual excepción relacionada a encontrar el archivo p. ej
        // (The system cannot find the file specified)
        }catch(Exception e){
            System.err.println(e.getMessage());
        }
    }
}

3. Escribiendo información al archivo INI

Escribir en un archivo de este tipo implica insertar/remover/actualizar:

Definir valor de una propiedad

Para cambiar el valor de una propiedad dentro de una sección, use el método put de la instancia de la clase Wini. Este método espera hasta 3 argumentos:

  • La sección de la que quieres actualizar la propiedad.
  • El nombre de la propiedad que quieres cambiar.
  • El nuevo valor de la propiedad.

Finalmente guarde cambios al archivo con el método store:

package com.ourcodeworld.mavensandbox;

// Importar clases requeridas
import java.io.File;
import org.ini4j.*;

/**
 * Ejemplo básico de como usar la librería Ini4j.
 * 
 * @author Carlos Delgado <dev@ourcodeworld.com>
 */
public class Index {
    
    public static void main(String[] args){
        try{
            Wini ini = new Wini(new File("C:\\Users\\sdkca\\Desktop\\myinifile.ini"));
            
            ini.put("nombre_seccion", "nombre_propiedad", "valor");
            ini.put("nombre_seccion", "nombre_propiedad_2", 45.6);
            ini.store();
        // Para atrapar cual excepción relacionada a encontrar el archivo p. ej
        // (The system cannot find the file specified)
        }catch(Exception e){
            System.err.println(e.getMessage());
        }
    }
}

Remover una sección entera

Si deseas eliminar una sección entera de un archivo, usa el método remove que espera el nombre de la sección que quieres eliminar, luego guarda cambios usando el método store:

package com.ourcodeworld.mavensandbox;

// Importar clases requeridas
import java.io.File;
import org.ini4j.*;

/**
 * Ejemplo básico de como usar la librería Ini4j.
 * 
 * @author Carlos Delgado <dev@ourcodeworld.com>
 */
public class Index {
    
    public static void main(String[] args){
        try{
            Wini ini = new Wini(new File("C:\\Users\\sdkca\\Desktop\\myinifile.ini"));
            
            ini.remove("nombre_seccion");
            ini.store();
        // Para atrapar cual excepción relacionada a encontrar el archivo p. ej
        // (The system cannot find the file specified)
        }catch(Exception e){
            System.err.println(e.getMessage());
        }
    }
}

Que te diviertas !


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores