domingo, 5 de mayo de 2013

Leer Archivo Properties en Java

En el segundo Post de este blog se mencionó la intención de publicar entradas sobre diversos temas, algunos complejos otros no tanto.........hasta aquí se han publicado cositas no tan complejas pero que pueden llegar a ser enredadas o de cuidado.

En esta ocasión veremos una entrada sobre algo simple y fácil de entender pero que nos puede ser de mucha ayuda.


Veremos de forma breve como trabajar con un archivo de propiedades desde java, estos archivos son simplemente ficheros de texto que podemos usar para almacenar información, inicializar variables, establecer mensajes o en general definir parámetros (en tutoriales anteriores hicimos uso de este tipo de archivos para definir rutas de servidores o parametros de configuración).

En java trabajaremos con java.util.Properties donde básicamente necesitamos especificar nuestros parámetros mediante la combinación "Clave - Valor" y usar los métodos básicos que esta clase nos proveé, un ejemplo simple puede darse con el tema de la internacionalización, podemos crear archivos properties para definir todos los labels o etiquetas que usaremos en la aplicación para diferentes idiomas y dependiendo del idioma que escogemos buscamos el valor a presentar en pantalla en su archivo correspondiente.

Otro ejemplo es que en la empresa donde trabajo nos encontramos desarrollando una aplicación que genera una serie de reportes de Excel y se deben almacenar en unas rutas especificas, son muchos reportes que se almacenan en rutas diferentes, por eso podríamos hacer que esas rutas de directorios se puedan parametrizar en un archivo properties y no  quemadas en código.

Empecemos!!!

Para este caso vamos a crear un proyecto Java básico, donde definiremos dos paquetes, uno para las clases y otro para el archivo.properties.


Luego desde el paquete properties damos click derecho y creamos un nuevo archivo de propiedades.


Se carga una ventana donde ingresamos archivo.propierties, siendo este el nombre y la extensión del archivo.


Después de esto ya contamos con un panel donde podemos editar el archivo de propiedades, presionando el botón Add podemos empezar a agregar parámetros con la combinación Clave - Valor.


 O desde la vista Source podemos agregarlos directamente.


Para poder acceder a estos datos desde el código fuente, haremos uso de los métodos load y getProperty que nos provee la clase Properties.

En la clase principal de nuestra aplicación creamos un método donde realizaremos el cargue y obtención de datos desde el archivo de propiedades.

package clases;

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

/**
 * @author CHENAO
 * 
 */
public class Principal {

 public static void main(String arg[]) {

  Principal miPrincipal = new Principal();
  miPrincipal.leerArchivo();
 }

 /**
  * Lee un archivo de propiedades desde una ruta especifica
  * y se imprime en pantalla.
  */
 private void leerArchivo() {
  try {
  
/**Creamos un Objeto de tipo Properties*/
   Properties propiedades = new Properties();
   
   /**Cargamos el archivo desde la ruta especificada*/
   propiedades
     .load(new FileInputStream(
       "D:/HENAO/codejavu/Workspace/PruebaProperties/src/properties/archivo.properties"));

   /**Obtenemos los parametros definidos en el archivo*/
   String nombre = propiedades.getProperty("nombre");
   String pagina = propiedades.getProperty("pagina");

   /**Imprimimos los valores*/
   System.out.println("Nombre: "+nombre + "\n" +"Pagina: "+ pagina);
      
   
  } catch (FileNotFoundException e) {
   System.out.println("Error, El archivo no exite");
  } catch (IOException e) {
   System.out.println("Error, No se puede leer el archivo");
  }
 }
}




Al correr nuestra aplicación podemos ver como se obtienen los datos desde la ruta enviada en el método load.

si queremos podemos almacenar el archivo en otra ruta, por ejemplo la del servidor de aplicaciones y luego enviarla como parámetro...................................... al final la salida es


Y listo, ya obtuvimos los datos desde el archivo de propiedades, la clase Properties nos provee mas métodos que podemos utilizar dependiendo de lo que necesitemos hacer, podemos sobre-escribir los valores, almacenar datos en otro fichero entre otros...
Mas adelante publicare otras cositas sencillas pero de Utilidad.


También te podría Interesar. 


¿Hay algo que quieras anexar o comentar sobre esta entrada?  no dudes en hacerlo....

39 comentarios:

  1. chupa vena con tu lectura!

    ResponderEliminar
    Respuestas
    1. Hola, gracias por el comentario, aúnque no entendi el termino de chupa vena.... es bueno o malo? jejejeje un saludo igual (Y)

      Eliminar
    2. Imagino que esta diciendo que te esta chupando la sangre porque el tutorial es bueno jejejeje.....

      Eliminar
  2. algun tutorial sobre ficheros? gracias

    ResponderEliminar
    Respuestas
    1. Hola, te cuento que aún no he publicado sobre el tema pero si estoy preparando algo para compartir, este fin de semana espero crear un post sobre JFileChooser ya que sigue en la lista de publicaciones sobre el tema de componentes Java Swing, asi que mas adelante espero seguir trabajando con archivos, te invito a participar en el sitio para estar atento a las publicaciones, un saludo ;)
      http://codejavu.blogspot.com/2013/09/componentes-java-swing.html

      Eliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
    Respuestas
    1. Hola, no se porq eliminaste el comentario pero si, podria ser una opcion recorriendo un ciclo y almacenando los valores en un array..... un saludo ;)

      Eliminar
    2. Si si ... vaya programadores chapuceros.

      conoces el consumo al ciclos guardar en arrays etc... frente a un .properties ?

      Mejor no molestar, GRACIAS

      Eliminar
  4. Buen post, gracias por compartir el conocimiento, espero sigas escribiendo posts como este. Son interesantes.
    ¿Tendras algunos tutoriales de Spring, Hibernate, JSF o su integración de todos juntos?

    ResponderEliminar
    Respuestas
    1. Hola, gracias por comentar, y te cuento que no, aún no vinculo lo que buscas de lleno, tengo un ejemplo de creación de un proyecto web, pero es un demo que provee eclipse para iniciar, y tengo unos videotutoriales en youtube sobre el trabajo con richFaces, llevo poco con videos y no estoy siendo muy constante por falta de tiempo, si te sirve te comparto ;)
      http://www.youtube.com/watch?v=SAfGl7XbFNI

      Eliminar
  5. Hola, muy buen tutorial, encontre todo lo que buscaba, sucede que yo queria otro metodo de cargar un archivo .properties porque ya cargo uno pero los parametros se los paso al args del main y asi es como uso los parámetros, con este metodo puedo cargar los parametros del otro archivo properties que uso. Gracias. Saludos

    ResponderEliminar
    Respuestas
    1. Hola, me alegra que te sirviera, esa es la idea, muchas gracias por comentar ;)

      Eliminar
  6. Muy claro, Felicitaciones y sigue aedlante

    ResponderEliminar
  7. Excelente el tutorial. Sabes como se puede modificar los parámetros sin perder la configuración al memento de ejecutar nuevamente el jar.

    Gracias.

    ResponderEliminar
    Respuestas
    1. creo que alguna vez revisé el proceso, voy a buscar y si algo lo publico, gracias por comentar

      Eliminar
  8. Gracias :)... y me ayudarías con un tutorial de hilos?:).

    ResponderEliminar
    Respuestas
    1. Hola, tengo pensado subir algo de hilos mas adelante, espero salirme de algo para tener mas tiempo y ahí poder continuar... gracias por comentar, Salu2

      Eliminar
  9. Hola, buen tutorial pero me gustaría saber cómo hago para asignar valores a una matriz a partir de un archivo properties. gracias.

    ResponderEliminar
  10. Excelente código, me ayudo mucho. Gracias

    ResponderEliminar
  11. Muy buen aporte!
    Quería consultarte sobre cómo hacer para que se lea la conexión a mi base de datos SQL Server desde el .properties.

    Muchas gracias,
    saludos!

    ResponderEliminar
  12. Buen ejemplo, gracias por compartir tu conocimiento, no se para que lo voy a utilizar pero de todas formas sirve ir adquiriendo conocimientos

    ResponderEliminar
  13. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  14. Muy bien!!!!
    le puedo pasar valores a ese archivo.properties desde una clase java
    mira tengo una clase que recibe parámetros
    y esos parámetros se los kiero asignar a ese archivo.properties
    se puede????
    como????
    Saludos!!!!

    ResponderEliminar
    Respuestas
    1. Es un archivo con una configuracion de texto, CLAVE = VALOR, asi que puedes reconstruir todos los valores y eliminar el archivo y volver a guardar pues no creo que hay lio, mmm no se si habra una forma de vaciar texto y volver a colocar.

      Eliminar
  15. hola amigo. me gustaria que me ayudaras soy nuevo con los archivos de texto, me dejaron una tarea de hacer un programa que lea un archivo de texto. Separar y sumarlos números que tiene y mostrarlo en pantalla por ultimo lo guarda en otro archivo de texto.
    ejemplo:
    5+5 en la consola sería ---> 5 + 5 = 10
    10+5 en la consola sería -----> 10 + 5 =15
    porfa amigo..

    ResponderEliminar
  16. Buena mi perro, severo aporte mi zoo, la buena papa, bless.

    ResponderEliminar
  17. Hola, Cristian! Si estas interesado en traducir archivos .Properties, yo recomiendo altamente esta rápida y intuitiva herramienta para la localización de software: https://poeditor.com

    ResponderEliminar
  18. Qué buen blog y los videos que tienes en YouTube son excelentes de casualidad no tienes algo de de Richafaces con jpa

    ResponderEliminar
  19. Qué buen blog y los videos que tienes en YouTube son excelentes de casualidad no tienes algo de de Richafaces con jpa

    ResponderEliminar
    Respuestas
    1. Hola, muchas gracias, te cuento que tengo una lista de reproduccion viejita pero depronto sirve.... desps retomo la secuencia... https://www.youtube.com/playlist?list=PLAg6Lv5BbjjcJMA3685peY_hlTuC0oicN

      Eliminar
  20. Properties propiedades = new Properties();
    try (FileInputStream fileInputStream = new FileInputStream(ruta_archivo)) {
    propiedades.load(fileInputStream);
    fileInputStream.close();
    }


    Siempre hay que cerrar el flujo de datos.

    ResponderEliminar
  21. QUE TAL. podrían auxiliarme con mi caso:

    cree una aplicación de consultas (en MySql) que solo esta funcionando en 1 ordenador-A.
    ahora quiero pasar esa aplicación a otros 2 ordenadores (ordenador-B, ordenador-C).
    - el detalle es que en mi ordenador-A, la aplicación JALABA unas Imágenes con esta lineas :
    *****String url = System.getProperty("user.home")+"/Desktop/IAB/"+nom+".jpg";
    *****ImageIcon img = new ImageIcon(url);
    P E R O, en el ordenador-B Y C, no he logrado que jalen las imágenes que están almacenadas en el Ordenador-A.

    PUEDEN aconsejarme en como puedo resolver esto. por que ese es el punto del ordenador B Y C jalar las imágenes que están almacenadas en el ordenador-A.
    .
    - los 3 Ordenadores están en conexión local, y la aplicación hace las consultas al ordenador-A por medio de la dirección IP;
    G R A C I A S

    ResponderEliminar
  22. Buenos dias, gracias por tu aporte de antemano.
    Mi duda surge si mi archivo de propiedades tiene la siguiente estructura:
    [Propiedad 1]
    nombre 1= a
    nombre 2= b
    [Propiedad 2]
    nombre 1= c
    nombre 2= d

    Como hago en el principal para leer propiedad 1 u 2 la que yo desee.
    Muchas gracias!

    ResponderEliminar
  23. Hola, gracias por compartir tus conocimientos.
    tengo una pregunta, quiero ejecutar mi archivo properties desde fuera de mi archivo war, alguna opción para esto?? desde ya muchas gracias. :)

    ResponderEliminar
    Respuestas
    1. Hola, si claro, revisa sobre rutas relativas y rutas absolutas, de esta manera entenderás el concepto y podrás definir la ruta del archivo en tu equipo que será llamado desde el rar, lamento no poder colaborarte mas pero estoy un poquito ocupado, espero te sirva.

      Eliminar
  24. Fe de Erratas, propierties > properties

    http://imgur.com/a/BEAMY

    Gracias por el tutorial

    ResponderEliminar
  25. Cristian Henao, gusto en saludarte máster. Necesito de tu ayuda. Quiero poder leer un archivo y obtener de el la información que enviaré en caja de texto de forma automatizada con selenium webdriver y java.

    ResponderEliminar
  26. Porque al tener varios datos
    nombre"aaaaa"
    edad="23"
    nombre"bbbbb"
    edad="53"
    nombre"cccc"
    edad="58"


    solamente lee el ultimo grupo ? Como se puede hacer para que lea todo el conjunto ?

    ResponderEliminar

Eres libre de realizar cualquier comentario, desde que pueda ayudar con gusto lo atenderé, y si es un critica, bienvenida sea!!!