java – 如何覆盖.properties中的一个属性,而不覆盖整个文件?

基本上,我必须通过Java应用程序在.properties文件中覆盖某个属性,但是当我使用Properties.setProperty()和Properties.Store()时,它会覆盖整个文件,而不是仅仅一个属性。

我已经尝试使用append = true构造FileOutputStream,但是它添加了另一个属性,并且不会删除/覆盖现有属性。

如何编写代码,以便设置一个属性会覆盖该特定的属性,而不会覆盖整个文件?

编辑:我尝试阅读文件并添加它。这是我更新的代码:

FileOutputStream out = new FileOutputStream("file.properties");
FileInputStream in = new FileInputStream("file.properties");
Properties props = new Properties();

props.load(in);
in.close();

props.setProperty("somekey", "somevalue");
props.store(out, null);
out.close();
最佳答案
Properties API不提供在属性文件中添加/替换/删除属性的任何方法。 API支持的模型是从文件加载所有属性,对内存中的Properties对象进行更改,然后将所有属性存储到一个文件(同一个或另一个)。

但是属性API在这方面并不罕见。实际上,文本文件的就地更新难以实现,而无需重写整个文件。这种困难是文件/文件系统由现代操作系统实现的直接后果。

如果您真的需要进行增量更新,那么您需要使用某种数据库来保存属性,而不是“.properties”文件。

转载注明原文:java – 如何覆盖.properties中的一个属性,而不覆盖整个文件? - 代码日志