Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用属性更新属性_Java_File_Properties_Fileoutputstream - Fatal编程技术网

Java 使用属性更新属性

Java 使用属性更新属性,java,file,properties,fileoutputstream,Java,File,Properties,Fileoutputstream,我想向现有文件添加新属性。每当我添加新属性时,整个文件都会被覆盖。是否有更新文件而不覆盖属性的方法 FileOutputStream fo = new FileOutputStream(PROPERTIES_FILE); Properties pr = new Properties(); pr.setProperty("Key1", "KeyValue"); try { pr.store(fo, " Comments"); } catch (IO

我想向现有文件添加新属性。每当我添加新属性时,整个文件都会被覆盖。是否有更新文件而不覆盖属性的方法

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) 现在,如果我想添加一个名为Key2的新属性,并设置一个值KeyValue2。可能吗

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

这样,文件的内容就不会丢失**

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

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

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

(3) 无论如何,有没有一种方法可以利用类路径来实现这一点

**上面已经提到了**

希望这有帮助