some image

Codes and Tags

Ejemplo para leer datos con Properties en Java

Etiquetas: Blog, Programación No comments

A veces en las aplicaciones de escritorio o aplicaciones Web, es común utilizar  archivos de propiedades para inicializar variables, manejar un set de datos e incluso parametrizar de alguna forma la aplicación.

En Java la clase Propertiesnos permite realizar todas estas labores de forma muy facil y precisamente esta contenida en el paquete de java.util.Properties

Dentro de los métodos utiles que nos brinda la clase Properties tenemos :

load(InputStream archivo) : void, Permite cargar los datos de un archivo especificado.
– loadFromXML(InputStream archivo) : void , Permite cargar los datos de un archivo especificado cuyo formato es XML.
– getProperty(String key)  : String, Permite obtener el valor de una propiedad definida a través de su llave correspondiente.
– keys() : Enumeration<Object> , Permite obtener una lista enumerada de las llaves obtenidas en el archivo, de esta forma se puede recorrer la lista enumerada y leer todas las propiedades.

Para mi ejemplo supongamos que tengo un archivo ubicado en la siguiente ruta resources/testing.properties y quiero obtener algunos valores de las propiedades definidas alli.

Contenido del archivo

usuario=admin
clave=123456
url=http://codesandtags.org
ips=190.168.4.132,190.168.4.133,127.0.0.1
crud=Create,Read,Update,Delete

Clase de ejemplo

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Properties;
import java.util.StringTokenizer;

/**
 * Aqui se ilustra un ejemplo sobre el uso de la clase Properties para leer
 * datos desde un archivo de propiedades.
 * 
 * @author [D-m-K] https://codesandtags.org
 */

public class ArchivoPropiedades {

	// Atributos de la clase
	private Properties propiedades;
	private String archivo;

	/**
	 * Constructor que inicializa el objeto properties y la ruta del archivo a
	 * trabajar
	 */
	public ArchivoPropiedades(String archivo) {
		propiedades = new Properties();
		this.archivo = archivo;

	}

	/**
	 * Carga en el objeto de propiedades los datos leidos del archivo
	 * 
	 * @return boolean
	 */
	public boolean cargarPropiedades() {
		try {
			propiedades.load(new FileInputStream(archivo));
			return true;
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}
	}

	/**
	 * Permite leer todas las propiedades almacenadas en el archivo mostrando su
	 * respectivo valor
	 */
	public void readPropiedades() {
		// Obtengo una enumeracion de llaves, cada llave permitira
		// obtener un valor dentro del properties
		Enumeration llaves = propiedades.keys();

		// Recorro llave por llave y obtengo su valor
		while (llaves.hasMoreElements()) {
			String llave = (String) llaves.nextElement();
			System.out.println(llave + "=" + propiedades.getProperty(llave));
		}
	}

	/**
	 * Obtiene el valor de una propiedad determinada y que exista en el archivo
	 * de propiedades, de lo contrario retornara null
	 * 
	 * @param propiedad
	 * @return
	 */
	public String getValorPropiedad(String propiedad) {
		return propiedades.getProperty(propiedad);
	}

	/**
	 * Ejemplo del uso de la clase ArchivoPropiedades
	 * 
	 * @param args
	 */
	public static void main(String args[]) {

		/***
		 * Instancia y carga de los datos al archivo
		 */
		// Objeto para manejar las propiedades
		ArchivoPropiedades ejemplo = new ArchivoPropiedades(
				"resources/testing.properties");
		// Carga los datos del archivo
		ejemplo.cargarPropiedades();

		/**
		 * Leyendo las propiedades
		 */

		// Leyendo todas las propiedades del archivo
		System.out.println("Leyendo todas las propiedaes del archivo....\n");
		ejemplo.readPropiedades();

		// Leyendo una propiedad individual con varios valores
		System.out
				.println("\nLeyendo una propiedad individual con varios valores....\n");
		StringTokenizer ips = new StringTokenizer(
				ejemplo.getValorPropiedad("ips"), ",");

		// Muestro los valores obtenidos en el StringTokenizer
		while (ips.hasMoreTokens()) {
			System.out.println(" - " + ips.nextToken());
		}

		System.out.println("\nAhora estoy mostrando otra propiedad...\n");
		StringTokenizer crud = new StringTokenizer(
				ejemplo.getValorPropiedad("crud"), ",");
		// Muestro los valores obtenidos en el StringTokenizer
		while (crud.hasMoreTokens()) {
			System.out.println(" - " + crud.nextToken());
		}

		// Mostrando solo una propiedad
		System.out.println("\nY una propiedad con un solo valor\n");
		System.out.println("url - " + ejemplo.getValorPropiedad("url"));

	}
}

Datos de salida

Leyendo todas las propiedaes del archivo....

url=http://codesandtags.org
clave=123456
usuario=admin
crud=Create,Read,Update,Delete
ips=190.168.4.132,190.168.4.133,127.0.0.1

Leyendo una propiedad individual con varios valores....

 - 190.168.4.132
 - 190.168.4.133
 - 127.0.0.1

Ahora estoy mostrando otra propiedad...

 - Create
 - Read
 - Update
 - Delete

Y una propiedad con un solo valor

url - http://codesandtags.org

Nota : Para mas información se puede consultar el API de Java y un ejemplo que muestran en la pagina de Oracle muy util.

About Edwin Torres

Related Posts

  • Logo Java
  • Logo Java
  • Logo Java
  • Logo Java

Add your comment