更新属性文件中的属性值而不删除其他值[重复]

问题描述 投票:0回答:3

First.properties
的内容:

name=elango
country=india
phone=12345

我想将

country
india
更改为
america
。这是我的代码:

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

First.properties
的输出内容:

country=america

其他属性被删除。我想更新特定属性值,而不删除其他属性。

java properties
3个回答
105
投票

关闭输入流后打开输出流并存储属性。

try (FileInputStream in = new FileInputStream("First.properties")) {
    Properties props = new Properties();
    props.load(in);
}
        
try (FileOutputStream out = new FileOutputStream("First.properties")){
    props.setProperty("country", "america");
    props.store(out, null);
}

36
投票

您可以使用 Apache Commons Configuration 库。 最好的部分是,它甚至不会弄乱属性文件并保持其完整(甚至评论)。

Javadoc

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

10
投票
Properties prop = new Properties();
prop.load(...); // FileInputStream 
prop.setProperty("key", "value");
prop.store(...); // FileOutputStream 
© www.soinside.com 2019 - 2024. All rights reserved.