Modificar valores de un fichero Properties

23/Dic/2007 Java , , , 13 Comentarios

Los ficheros de propiedades nos sirven para guardar pares clave/valor que normalmente contienen información variable utilizada por nuestro programa. Estaríamos hablando de ficheros de configuración.

Así, a bote pronto, se me ocurren cosas como URLs a las que acudir por información, datos sobre el usuario/password, números que representen límites de nuestras ejecuciones,...

Los ficheros de propiedades se cargan en los arranques de las aplicaciones y es en este momento cuando pasamos a tener un objeto Properties, el cual contendrá los pares clave/valor.

Para realizar la carga de un fichero de propiedades haríamos lo siguiente:

  1. try {
  2. is=new FileInputStream("fichero.prop");
  3. prop.load(is);
  4. } catch(IOException ioe) {ioe.printStackTrace();}

Lo más normal es leer el contenido de los pares clave/valor, si bien, también podemos modificar el valor de las claves. Para modificar el valor de las claves simplemente tendremos que utilizar el método .setProperty sobre el objeto objeto Properties.

  1. prop.setProperty("nombre", "ayudaenlaweb");
  2. prop.setProperty("web", "http://ayudaenlaweb.blogspot.com");

Los parámetros del método son la clave y el valor de la clave. Así, en nuestro código las claves son nombre y email.

Es muy importante saber que al utilizar el método .setProperty no se modifica el valor que está almacenado en el fichero de propiedades.

Para ver la utilidad de los métodos podemos listar el valor de las claves antes y después de la modificación. El código final sería el siguiente:

  1. // Listamos las propiedades
  2. System.out.println("PROPIEDADES POR DEFECTO");
  3. for (Enumeration e = prop.keys(); e.hasMoreElements(); ) {
  4. Object obj = e.nextElement();
  5. System.out.println(obj + ": "
  6. + prop.getProperty(obj.toString()));
  7. }
  8.  
  9. // Modificamos los valores
  10. prop.setProperty("nombre", "ayudaenlaweb");
  11. prop.setProperty("web", "http://ayudaenlaweb.blogspot.com");
  12.  
  13. // Volvemos a listar los valores
  14. System.out.println("PROPIEDADES MODIFICADAS");
  15. for (Enumeration e = prop.keys(); e.hasMoreElements(); ) {
  16. Object obj = e.nextElement();
  17. System.out.println(obj + ": "
  18. + prop.getProperty(obj.toString()));
  19. }

Vídeos sobre Java


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

13 comentarios en “Modificar valores de un fichero Properties”

Víctor Cuervo

cristian

estimados,

solo a modo de consulta, el transtecnia modifico sus tablas y me quedo sin el ultimo monto tope imponible, por lo que edite las tablas pero no esta, segun leí por hay dice que estan la programacion y quiero cambiar de 66 uf que tiene como tope a 70.5 pero no se como hacerlo.

si alguien a visto esto antes se los agradeceria

saludos

cristian

Víctor Cuervo

Víctor Cuervo

Ya tenemos el ejemplo para guardar los Properties en http://lineadecodigo.com/java/guardar-unos-properties-con-java/

Espero que os sirva. 😀

Víctor Cuervo

Víctor Cuervo

@eso es lo que pasa,

Como comentan @Jose Miguelq y @Hernan (que lo acompaña de un ejemplo), para persistirlo tenemos que utilizar el Props.Store

Espero poderos publicar un ejemplo simple con este uso en breve.

Gracias por los comentarios.

Víctor Cuervo

eso es lo que pasa

si hace la modificación, el punto es que el archivo no toma los cambios realizados en el proceso es decir no reescribe el archivo cargado ya que se crea uno a partir del que se carga….

Víctor Cuervo

Antonio Garcia

Yo antes de usar properties usaba un fichero de texto que recorria linea a linea.
Si el primer caracter era # pasaba a la siguiente linea.
Si encontraba el caracter = leia el key y el value suponiendo que =.

Un poco chapuza.

Víctor Cuervo

Javier

Puedo imprimir tambien los comentario que se hagan en los archivos properties?? ejemplo Archivo properties:
#Usuario de registro
username = username

mostrar lo que hay en el “#” con el key y el value…

Víctor Cuervo

Jose Miguelq

Es cierto, actualiza los parametros pero no los guarda en el properties, para eso hay que usar el Props.Store,
A ver para cuando la II parte

Un saludo

Víctor Cuervo

Antonio Garcia

Para Salvador.

Como usas Struts estaras usando Tomcat.
Yo lo solucione creando un fichero de configuracion en WEB-INF/conf/configuracion.conf (da igual el nombre del fichero)

En tiempo de ejecucion la ruta base es la ruta base de la aplicacion de Struts C:\tomcat\webapps\appstruts

Partiendo de esa base abres el fichero /WEB-INF/conf/configuracion.conf como explican aqui

Es una solucion (quiza no sea la manera JAVA de hacer las cosas)

Víctor Cuervo

Salvador

Por cierto Estoy trabajando con java y struts

Víctor Cuervo

Salvador

Hola como estas, oye tengo un problema, estoy empaquetando una clase la cual solo voy a proporcionar a un cliente dentro de un .jar
sin embargo en esa clase se configuran 5 datos importantes que pueden llegar a variar. Como se les entrega ya compilado, aun y cuando cambien valores de constantes de otro archivo del cual si les proporciono fuentes estos cambios no se ven reflejados en las .class del jar que les di. Lo que se me ocurrio fue usar properties. Sin embargo como le puedo hacer para proporcionar el path correcto en el inputFileStream, si el usuario puede tener el jar (manejado como una libreria más) en el folder que le plazca.

Víctor Cuervo

Kenya

sabes que tan grande puede ser un archivo properties?

me refiero puede tener por ejemplo 750 mil claves con su respectivo valor o no se puede cargar eso?

de antemano gracias

Víctor Cuervo

zhadown

stop no ace nada lo prove en miles de forsma y nunca consegui q cambiara los balores de l .properties

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*