Weblog de Victor Ramirez

Sábado, septiembre 11, 2010

Manejo de Properties en Java

Filed under: java, netbeans, tips, tutorial — Etiquetas: , , , — vramirez @ 11:21 AM

Hace pocos días un compañero de la oficina estaba revisando una aplicación en la que tenía que cambiar un párametro debido a un nuevo requerimiento. Me comentó que para cambiar el valor debía modificar el código y luego recompilar la aplicación (cada vez que dicho valor cambiara) y entregar de nuevo al cliente. Le dije que por qué no hacía un archivo de propiedades y leía el valor desde ahí ya que es sencillo, pues solo tiene que cambiar dicho valor en el archivo sin recompilar. El me miró medio confundido y me pidió que le explicara un poco más, a lo cual respondí diabólicamente: “averígualo, googlealo” (muahahahaaa!).

Hoy que tengo un poco de tiempo libre explicaré con un breve ejemlo como crear un archivo “.properties”, leer y guardar en este, valores como parámetros, así en caso de que cambian las necesidades simplemente modificaremos el archivo. No es la solución ideal, pues si alguien borra (por accidente y sin ninguna mala intención ;) ) nuestro archivo, la aplicación (según lo que hayamos codificado) podría desintegrarse ante nuestros ojos. Lo recomendable es almacenar estos valores parámetricos en una base de datos. Sin embargo, es un muy buen método para “salir del paso”.

Basta de cháchara, empezemos. Lo que haremos es lo siguiente: crear un archivo y que la aplicación lea de este sin tanto complique, para ellos creemos un proyecto Java Application y llamémoslo “TestProperties”

Hacemos clik derecho en el proyecto damos click derecho “New”–> “Other” Seleccionamos de nuevo “Other” y “Properties File”. Damos “Next” y luego cambiamos solamente el nombre del archivo por “variables” y por último “Finish”. En la raíz del proyecto queda un archivo denominado “variables.properties” damos doble click en el archivo.

Ubicación archivo .properties

Hacemos doble click en este archivo. Debajo de las línes de comentario (que pueden borrar si gustan) colocan las siguientes líneas:

var1=Hello World

var2=Bye World

Algo asi:

Contenido del archivo .properties

Es recomendable que se deje una línea para cuando se agreguen (si se requieren) nuevas variables

Abrimos la clase Main y dentro del método main codificamos así:

public static void main(String[] args) {
        try {
            // TODO code application logic here
            Properties props = new Properties();
            props.load(new FileInputStream("variables.properties"));
            System.out.println(props.getProperty("val1"));
            System.out.println(props.getProperty("val2"));
        } catch (IOException ex) {
            System.out.println("Error: "+ex);
        }
    }
El resultado de esta ejecución debe ser:
De esta misma forma se pueden insertar en el código valores y asignarlos a variables dentro del código sin tener que reemplazar ni mucho menos compilar nuevamente la aplicación. También se puede guardar propiedades en el archivo, pero eso “averígüenlo, googleen!” (muahahahaaaaa). Pista: métodos setProperty y store de la clase Properties
Pd: no es necesario que el archivo tenga una extensión .properties, la extensión puede ser cualquiera. En este caso es cuestión de conveniencia, de este modo NetBeans sabrá como abrirlo y mostrarlo.

8 comentarios »

  1. donde encuentro todo el codigo del programa . porfa…

    Comentario por luis — Miércoles, septiembre 29, 2010 @ 10:10 AM

  2. Hola, gracias por leer el blog. Lo montaré tan pronto pueda y avisaré por acá.

    Comentario por vramirez — Lunes, noviembre 29, 2010 @ 8:53 AM

  3. pero si encesito guardar los datos que genero en el programa para q esten alli en la proxima apertura q hago puedo emplear un archivo propertis?

    Comentario por jakeline — Martes, abril 10, 2012 @ 3:44 PM

  4. y por que cuando lo vulevo JAR no lo encuentra, donde debo colocar el archivo properties?

    Comentario por ar_ginez — Lunes, abril 16, 2012 @ 4:48 PM

  5. Lo puedes poner donde quieras dentro de tu .jar y luego lo puedes leer así:

    Ej: InputStream is = this.getClass().getResourceAsStream(“/com/package/env.properties”)
    done “/com/package/env.properties” es la ruta donde esta el fichero.

    Eso si, asegúrate de que cuando construyes el jar, el .properties también va incluido.

    Comentario por javier — Viernes, julio 13, 2012 @ 5:59 AM

  6. Hola

    Justamente era lo que buscaba, ya que necesitaba que el properties quedara fuera del jar. tal como lo haces en tu ejemplo. MUCHISIMAS GRACIAS Y SIGUE ASI.

    Comentario por aaron — Jueves, septiembre 19, 2013 @ 2:14 PM

  7. Hola,

    Muchas gracias por el tutorial, no sabia que era tan fácil hacerlo

    Comentario por Ashder — Martes, enero 14, 2014 @ 9:34 AM

  8. Gracias por visitar mi blog. Espero te haya servido bastante el post.

    Comentario por vramirez — Viernes, mayo 23, 2014 @ 9:37 AM


RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: