JAVA - 更新.properties文件

时间:2015-08-27 17:03:20

标签: java properties runtime

我正在尝试更新jar中的.properties文件,但没有成功。 在尝试以千种不同的方式做到这一点后,我在这里得到了这个例子:

    final AbstractFileConfiguration prop = new PropertiesConfiguration("application.properties");

    System.out.println(prop.getProperty(property));

    if (prop.containsKey(property)) {
        prop.setProperty(property, value);
        prop.save();
    }

这对我来说是一个例外:

org.apache.commons.configuration.ConfigurationException: Could not save to URL jar:file:/home/pedepano/myjarapp.jar!/application.properties
at org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:464)
at org.apache.commons.configuration.AbstractFileConfiguration.save(AbstractFileConfiguration.java:377)
at com.library.core.Configs.updateSimpleProperty(Configs.java:151)
at com.print.model.business.caixa.cnab240.listmodel.AbstractCnab240ListModel.mouseClicked(AbstractCnab240ListModel.java:111)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
at java.awt.Component.processMouseEvent(Component.java:6528)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)

有人说在运行时无法更新.properties文件,有人说是。我真的浪费时间试图找到答案...... 那可能吗? 如果有,怎么样? 如果不是,我该怎么做呢?

非常感谢!

2 个答案:

答案 0 :(得分:1)

您正在尝试回写已编译到.jar中的 .properties 文件,据我所知,这是不可能的;但是,您可以将该属性文件写入外部源。

File f = new File("my.properties");
OutputStream out = new FileOutputStream( f );
props.store(f, "a comment");

这将在.jar文件旁边创建文件。

如果这是您选择的路线,您可能需要先尝试从外部文件加载,如果找不到外部文件,则默认为默认值。

答案 1 :(得分:0)

     Properties properties = new Properties();
     try {      
             String propertiesFilePath = ("your file path");
             FileInputStream fis = new FileInputStream(propertiesFilePath);
             properties.load(fis);

             properties.setProperty("key","value");

             FileOutputStream fos = new FileOutputStream(propertiesFilePath);
             properties.store(fos,null);
             System.out.println("SUCCESS");
     }
     catch(Exception e) {
             System.out.println("FAILED");
     }