martes, 1 de octubre de 2013

Accediendo a archivos de propiedades en Java

Al momento de crear aplicaciones en Java puede necesitar almacenar parámetros que la aplicación necesitara, que puede ir desde direcciones de correo, direcciones para acceso a base de datos, información de conexión o datos varios, si bien hay varias formas de hacer esto, yendo desde bases de datos a crear uno mismo los archivos, Java nos proporciona un mecanismo integrado para realizar esto, los archivos de propiedades.

Estos son sencillamente archivos de texto con el formato

<nombre_clave>=<valor_clave>

Los cuales Java tiene mecanismos para acceder en forma nativa y que nos presenta una convención en donde deben ubicarse dichos archivos, de modo que mover la aplicación en el sistema de archivos o llevarla a otro sistema no cause problemas, esto se explicara con mas detalle a su momento.

Creando el proyecto.

Comenzaremos creando un proyecto en Java, como se ve en la figura 1, si a leído entradas anteriores ya habrá notado que siempre uso el paquete mx.com.hashSoft, esta vez no sera la excepción, pero ahora es parte vital del programa por lo que debe recordar agregarlo al momento de crear la clase Propiedades.

Figura 1 - Proyecto nuevo
Figura 1 - Proyecto


Figura 2 - Archivo de texto
Figura 2 - Archivo de texto

Ahora crearemos el archivo propiedades, para esto cree un archivo de texto, como se ve en la figura 2, ya que el archivo exista escriba en este lo siguiente:

version=1.0
tipo=texto
data="Datos Datos Datos Datos Datos"

Y guarde el archivo, esto le presentara un dialogo como el de la figura 3

Figura 3 - Ruta del archivo
Figura 3 - Ruta del archivo


En este caso es vital que siga la ruta indicada, esto es necesario, la idea general es que nuestro archivo properties este en la misma carpeta donde nuestra clase esta, esto es necesario para poder acceder a este.

Figura 4 - Codigo de la clase Propiedades
Figura 4 - Código de la clase Propiedades


Ahora procederemos a escribir el código de la clase Propiedades, el cual es el siguiente:

package mx.com.hashSoft;

import java.io.IOException;
import java.util.Properties;

public class Propiedades {

      static public void main(String[] args){
          Properties prop = new Properties();

          try {
               prop.load( Propiedades.class.getClassLoader().getResourceAsStream("mx/com/hashSoft/datos.properties") );

               System.out.println("Contenido del campo version:\t" + prop.getProperty("version") );
               System.out.println("Contenido del campo tipo:\t" + prop.getProperty("tipo") );
               System.out.println("Contenido del campo data:\t" + prop.getProperty("data") );
          }catch(IOException ex)
          {
                System.err.println("Error al acceder al archivo de propiedades");
                ex.printStackTrace();

           }
      }
}

De esta clase hay tres lineas relevantes, que son:

import java.util.Properties; - Con esta linea importamos la clase necesaria para manipular y acceder a los archivos de propiedades

prop.load( Propiedades.class.getClassLoader().getResourceAsStream("mx/com/hashSoft/datos.properties") ); - Con esta linea estamos indicando que archivo de propiedades deseamos cargar, en este caso deseamos cargar datos.properties, que se encuentra en la ruta mx/com/hashSoft, notara que si remplaza los / con . obtiene el paquete Java donde ubicamos el archivo properties, como en la figura 5 Eclipse genero esa ruta automáticamente de modo que la estructura de los paquetes Java coincida con al organización de los archivos

Figura 5 - Ruta del archivo properties
Figura 5 - Ruta del archivo properties

Todo esto podrá parecer demasiado rebuscado, mas por que es, en efecto, posible escribir directamente la ruta del archivo, sin embargo hay una razón para acceder a los archivos de este modo en la mayoría de los casos no puede saber a ciencia cierta detalles como la ruta de instalación o el directorio donde se esta ejecutando el programa no se diga cuando se trata de una aplicación que se ejecuta en un servidor, pero el classpath siempre esta perfectamente definido y se mantiene constante, lo que hace este el modo mas seguro para acceder a los archivos properties.

Ya que tenga ambos archivos puede ejecutar el programa , con lo que obtendrá una salida como la figura 6

Figura 6 - Salida
Figura 6 - Salida



Puede modificar el archivo properties y con eso modificar la salida del programa, como ejemplo digamos que escribiera "tipo" con mayúscula, si hace ese cambio y ejecuta el programa obtendrá la salida de la figura 7, lo que demuestra que las claves distinguen de mayúsculas y minúsculas.

Figura 7 - Archivo Modificado
Figura 7 - Archivo Modificado

Y si cambia el valor de la clave eso se refleja en la salida, como muestra la figura 8

Figura 8 - Cambio de valor
Figura 8 - Cambio de valor


Y notara que incluso puede cambiar el orden en que están las claves y aun así la salida es la esperada.

Espero que la entrada halla sido de ayuda, y nos vemos pronto.

Referencias

 Java Properties File Examples - http://www.mkyong.com/java/java-properties-file-examples/

No hay comentarios:

Publicar un comentario