我希望更改属性文件中的属性值。 我试过一些方法,比如FileInputStream / FileOutputStream或Apache的库,但是所有这些都改变了文件结构。
我的文件结构是:
#[Section 1]
prop1=value1
prop2=value2
#[Section 2]
prop2=value2
prop4=value4
执行代码后,属性会更改,但"部分"项目消失,文件只包含无序属性列表 有没有办法保留上面的结构?
我试过这些方法:Updating property value in properties file without deleting other values
答案 0 :(得分:1)
我已经使用了apache commons-configuration并且它运行良好:
PropertiesConfiguration conf = new PropertiesConfiguration("p.properties");
conf.setProperty("prop3", "newValue");
conf.save();
整个结构不会改变。
答案 1 :(得分:0)
更改任何文件的一般方法是读取文件内容,将文件内容保留在内存中,更改所需内容并写回整个内容。如果您直接编写属性值,那么标记部分将会消失。如果要将内容附加到文件末尾,则在上述情况下有一个例外。在其他任何地方,您都必须阅读文件并将文件整体写入。
答案 2 :(得分:0)
是的,整个文件都被重写了。另外属性是chached(你可以解除它们),属性文件通常是类路径上的资源文件,因此可能打包在jar / war中。
然而,似乎你可以写它并且所有,你可以选择XML属性文件。请参阅Properties API,其中包含loadFromXML和storeToXML。这也是UTF-8能力。
答案 3 :(得分:0)
例如:
try(InputStream is = getClass().getResourceAsStream("my.properties")) {
Properties properties = new Properties();
properties.load(is);
properties.setProperty("prop4", "CHANGED");
props.store(out);
}
请注意,写入属性文件并不常见。通常,您在分发中提供默认文件,用户可以更改值以配置系统。如果您需要存储应用程序数据,请考虑使用the Java Preferences API。