No es un bug, es una característica no documentada

martes, 12 de diciembre de 2017

Leer ficheros properties en Java

17:11 Posted by Jose Ignacio Claver Paules No comments
Una práctica habitual en Java es guardar parámetros de configuración en un archivo de propiedades, que es básicamente un fichero de texto plano con la extensión .properties con su contenido almacenado como una pareja clave=valor y con el símbolo # para indicar línea de comentario.

Por ejemplo:
# Archivo properties
usuario=Inazio
password=programandoapasitos.com
ruta=/home/inazio/resources
Así, en este ejemplo la primera línea será solo de comentarios, y en las posteriores cada clave será un parámetro de nuestra configuración y, separado por un igual, su valor correspondiente.

Java nos proporciona una herramienta muy útil y sencilla para leer los archivos de propiedades, la clase Properties.

Para usarla, lo primero que haremos será inicializar nuestro objeto y posteriormente indicarle que cargue el fichero de propiedades.
Properties propiedades = new Properties();
propiedades.load(new FileReader("config.properties"));
Hecho esto, sólo nos quedará indicar si queremos que lea una o todas las propiedades.

Leer una propiedad

La verdad es que es tremendamente sencillo. Para realizazr la lectura de un valor en nuestro archivo properties basta con la siguiente línea
propiedades.getProperty(miClave)
Como veis, lo único que hacemos es usar el método getProperty y como parámetro le pasamos la clave del valor a extraer, devolviéndonoslo como un String.

Leer todas las propiedades

Para leer todas las propiedades recurriremos a un objeto Enumeration que nos permitirá iterar sobre todas ellas, leeremos la clave de los valores en un bucle y obteniendo la clave, usaremos el mismo modo que en el ejemplo anterior. En este caso lo imprimiremos también
Enumeration<Object> claves = propiedades.keys();
  
while (claves.hasMoreElements()) {
  Object clave = claves.nextElement();
  System.out.println(clave.toString() + " - " + propiedades.get(clave).toString());
}
¿Qué hacemos exactamente? 
En nuestro objeto Enumeration almacenamos todas las claves que incluye nuestro objeto Properties, e iniciamos un bucle hasta que recorrer todos los elementos.
Después creamos un objeto genérico que será nuestra clave, y es la que usamos para extraer el valor de dicho par en la línea de abajo, aprovechando para imprimir la clave y la propiedad haciendo de ambas un casteo de String.


¿A que resulta tremendamente sencillo? Ahora solo es cuestión de practicar con ello.
Podéis ver el código completo de esta entrada en mi gist público pulsando aquí. Ahí tendréis una clase con un patrón Singleton que permite manejar este tipo de archivos..

0 comentarios:

Publicar un comentario