【问题标题】:Java Properties File appending new values附加新值的 Java 属性文件
【发布时间】:2014-01-24 16:33:48
【问题描述】:

我有一个应用程序,它实现了一个 JTree,并默认使用 java 属性文件填充树;节点是键,值是节点的内容。该应用程序被设计为动态的,因此实现了 JButton 和 JTextField 以接收新值并将值放入属性文件的存在键中。

例如,我将下面的行作为 sample.properties 文件中的默认值

节点=猫、狗、老鼠

并使用 JTextField 和 JButton 输入“兔子”以附加到节点,如下所示:

节点=猫、狗、老鼠、兔子

我已经实现了 JTextField 和 JButton 并让它们正常工作,但我似乎无法找到一种将新值附加到属性文件中现有键的好方法。

【问题讨论】:

    标签: java properties


    【解决方案1】:

    只要FileWriter

    FileWriter fileWritter = new FileWriter("example.properties", true);
    BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
    bufferWritter.append("PROPERTES_YOUR_KEY=PROPERTES_YOUR_VALUE");
    bufferWritter.close();
    

    更新

    Properties API 不支持,我不知道你为什么需要这个功能。
    您可以尝试如下:

    example.properties

    PROPERTIES_KEY_3=PROPERTIES_VALUE_3
    PROPERTIES_KEY_2=PROPERTIES_VALUE_2
    PROPERTIES_KEY_1=PROPERTIES_VALUE_1
    

    程序

    Properties pop = new Properties();
    pop.load(new FileInputStream("example.properties"));
    pop.put("PROPERTIES_KEY_3", "OVERWRITE_VALUE");
    FileOutputStream output = new FileOutputStream("example.properties");
    pop.store(output, "This is overwrite file");
    

    输出

    PROPERTIES_KEY_3=OVERWRITE_VALUE
    PROPERTIES_KEY_2=PROPERTIES_VALUE_2
    PROPERTIES_KEY_1=PROPERTIES_VALUE_1
    

    【讨论】:

    • 我刚试过这个,它似乎没有附加到现有的 key=value 对。我想要的是将新值附加到现有的 key=value 对,所以如果我想在现有的“key=value1”中添加“value2”,它将附加到现有的 key 看起来像“key=value1,value2”
    • 嘿,谢谢,这解决了我的问题,起初 BufferedWritter 只是不断将整个属性文件附加到自身上,但使用 FileOutputStream 它重写它,这是我需要的
    【解决方案2】:

    我会看Apache Commons Configuration。 它有非常具体的示例可以满足您的要求。

    试试:

    import org.apache.commons.configuration.PropertiesConfiguration;
    
    PropertiesConfiguration config = new PropertiesConfiguration(
        "config.properties");
    
    config.setProperty("my.property", somevalue);
    
    config.save();
    

    【讨论】:

    • 它似乎类似于 Java 属性,只是它实际上在一个键中满足多个值,但我认为更改所有内容以适应这一点在时间上对我没有好处
    猜你喜欢
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2018-01-18
    相关资源
    最近更新 更多