使用Properties更新属性

时间:2014-11-13 11:56:32

标签: java file properties fileoutputstream

我想将新属性添加到现有文件中。每当我添加新属性时,整个文件都会被覆盖。有没有办法更新文件而不是覆盖属性。

FileOutputStream fo = new FileOutputStream(PROPERTIES_FILE);
    Properties pr = new Properties();
    pr.setProperty("Key1", "KeyValue");
    try {
        pr.store(fo, " Comments");

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

(1)现在,如果我想添加一个名为Key2的新属性并设置一个值KeyValue2。有可能吗?

(2)当我在tomcat中部署时,只有当我给出绝对路径时,文件才会更新。有没有办法在运行时找到文件位置。因为当我运行测试用例时,文件将在本地出现,路径将不同。

(3)有没有办法在此方面利用类路径。

提前致谢!

1 个答案:

答案 0 :(得分:0)

**我正在写下来,因为我找不到明确的答案**

(1)现在,如果我想添加一个名为Key2的新属性并设置一个值KeyValue2。有可能吗?

**是的,这是可能的。理解这里的关键是,属性对象将存储在调用'store'api上。这附加不会发生。该文件将被属性对象的内容覆盖。 API不支持附录。 解决这个问题的方法是: 1)从同一文件加载属性 2)更新新属性或现有属性 3)然后使用输出流存储

以这种方式,文件的内容不会丢失**

(2)当我在tomcat中部署时,只有当我给出绝对路径时,文件才会更新。有没有办法在运行时找到文件位置。因为当我运行测试用例时,文件将在本地出现,路径将不同。

**有两种方法可以做到这一点 1)确保文件存在于类路径中。如果存在于类路径中,我们不需要在文件名

之前给出绝对路径

2)提供另一个设置路径的类。通过这种方式,可以在运行测试用例时设置路径。 (TestNG的/ JUNIT)**

(3)有没有办法在此方面利用类路径。

**上面已经介绍**

希望这有帮助