Actualización del valor de la propiedad en el archivo de propiedades sin eliminar otros valores [duplicate]

3 minutos de lectura

Avatar de usuario de Elangovan
Elangovan

Contenido de First.properties:

name=elango
country=india
phone=12345

Quiero cambiar country de india a america. Este es mi código:

import java.io.*;
public class UpdateProperty 
{
    public static void main(String args[]) throws Exception 
    {   
        FileOutputStream out = new FileOutputStream("First.properties");
        FileInputStream in = new FileInputStream("First.properties");
        Properties props = new Properties();
        props.load(in);
        in.close();
        props.setProperty("country", "america");
        props.store(out, null);
        out.close();
    } 
}

Contenido de salida de First.properties:

country=america

Las demás propiedades se eliminan. Quiero actualizar un valor de propiedad en particular, sin eliminar las otras propiedades.

  • Similar: stackoverflow.com/questions/7461901/… y stackoverflow.com/questions/565932/…

    – Vadzim

    30 de junio de 2017 a las 9:44


Avatar de usuario de Vasyl Keretsman
Vasyl Keretsman

Abra el flujo de salida y guarde las propiedades después de haber cerrado el flujo de entrada.

FileInputStream in = new FileInputStream("First.properties");
Properties props = new Properties();
props.load(in);
in.close();

FileOutputStream out = new FileOutputStream("First.properties");
props.setProperty("country", "america");
props.store(out, null);
out.close();

  • Gracias Vasyl Keretsman, cambio el código. ¿Es correcto? Props de propiedades = nuevas propiedades (); props.load(en); props.setProperty(“país”, “américa”); props.store(fuera, nulo); fuera.cerrar(); cercar(); pero la respuesta es la misma. no obtuve la respuesta esperada

    – Elangovan

    11 de marzo de 2013 a las 11:48


  • Incorrecto. He agregado el código a mi respuesta.

    – Vasyl Keretsman

    11 de marzo de 2013 a las 11:55

  • Gracias Vasyl Keretsman. Está funcionando ..

    – Elangovan

    11 de marzo de 2013 a las 12:07

  • @VasylKeretsman se eliminan todos los comentarios existentes en el archivo

    – Paraneetharan Saravanaperumal

    2 de julio de 2015 a las 9:17


  • ¿Cómo se convirtió esto en la respuesta aceptada? Elimina todas las propiedades previamente establecidas.

    – GuauBow

    30 de septiembre de 2016 a las 0:26

Avatar de usuario de AnirbanDebnath
AnirbanDebnath

Puedes usar Configuración de Apache Commons biblioteca. La mejor parte de esto es que ni siquiera arruinará el archivo de propiedades y lo mantendrá intacto (incluso los comentarios).

Javadoc

PropertiesConfiguration conf = new PropertiesConfiguration("propFile.properties");
conf.setProperty("key", "value");
conf.save();    

  • Esta es una respuesta mucho mejor que la aceptada.

    –Joe Hackerberg

    16 de febrero de 2017 a las 14:19

  • @GOXR3PLUS Lo siento, no puedo probarlo en este momento, pero pensé que debería funcionar porque hay una anotación en el encabezado del sitio web donde puede ver: “Última publicación: 08 de febrero de 2017 | Versión: 2.1.1” Es bastante confuso, pero aún puede usar versiones anteriores. Desafortunadamente, no puedo ayudarte más con esto 🙁

    –Joe Hackerberg

    12 mayo 2017 a las 10:42

  • @JoséMª Yo había usado la versión 1.1. Además, la versión 2.1 tiene la save() método en él. commons.apache.org/proper/commons-configuration/apidocs/org/…

    – AnirbanDebnath

    22 de mayo de 2017 a las 7:55


  • Hola @J.Doem: Puedes usar el Older 1.10 version que tiene un constructor String args para pasar el nombre del archivo directamente. De lo contrario, para V2, puede usar el PropertyConfiguration de clase loadIncludeFile(String fileName) método para pasar el nombre del archivo.

    – AnirbanDebnath

    20 de agosto de 2017 a las 8:22


  • Esta solución resolvió mis 2 problemas. 1. Guardar el archivo sin perder otros datos y también 2. Las posiciones de las teclas no se intercambian (al usar otras soluciones, es decir, con flujos de entrada y salida de archivos, las posiciones de las teclas se intercambian a posiciones aleatorias y también se eliminan los comentarios).

    – Lakshmipathi G.

    22 de marzo de 2022 a las 13:10


Properties prop = new Properties();
prop.load(...); // FileInputStream 
prop.setProperty("key", "value");
prop.store(...); // FileOutputStream 

¿Ha sido útil esta solución?