web-dev-qa-db-fra.com

Mise à jour de la valeur d'une propriété dans un fichier de propriétés sans supprimer d'autres valeurs

Contenu de First.properties:

name=elango
country=india
phone=12345

Je veux changer country de india en america. Ceci est mon code:

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();
    } 
}

Contenu de sortie de First.properties:

country=america

Les autres propriétés sont supprimées. Je veux mettre à jour une valeur de propriété particulière, sans supprimer les autres propriétés.

49
Elangovan

Ouvrez le flux de sortie et stockez les propriétés après avoir fermé le flux d'entrée.

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();
92
Vasyl Keretsman

Vous pouvez utiliser la bibliothèque Apache Commons Configuration . La meilleure partie si cela est, il ne sera même pas gâcher le fichier de propriétés et le conserve intact ( même les commentaires ).

Javadoc

PropertiesConfiguration conf = new PropertiesConfiguration("propFile.properties");
props.setProperty("key", "value");
conf.save();    
19
AnirbanDebnath
Properties prop = new Properties();
prop.load(...); // FileInputStream 
prop.setProperty("key", "value");
prop.store(...); // FileOutputStream 
8
Joe2013