我正在使用Java的property.load和property.setProperty将新属性添加到属性文件中。但是在执行props.store时,完整属性文件将被重写,并且文件中现有属性的顺序也会更改。下面是我的代码段。
private void test() {
try {
Properties props = new Properties();
String src = "Path_To_Properties_File";
props.load(new FileInputStream(src));
props.setProperty("C", "3");
props.store(new FileOutputStream(src), null);
} catch (Exception e) {
e.printStackTrace();
}
}
例如,假设在操作之前属性文件包含-
A=1
B=2
发布操作结果为-
#Tue Aug 28 14:57:24 IST 2018
A=1
C=3
B=2
我曾尝试使用Apache的Commons Configuration API,但它似乎也只用新属性覆盖文件。有关的代码块是-
private void test1() throws ConfigurationException {
try {
Parameters params = new Parameters();
FileBasedConfigurationBuilder<FileBasedConfiguration> builder =
new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
.configure(params.properties()
.setFileName(Path_To_Properties_File));
Configuration config = builder.getConfiguration();
config.setProperty("C", "3");
builder.save();
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
}
我正在使用翻译器工具生成新属性,并且需要完整无缺的文件才能在末尾进行比较。请提出如何仅将属性追加到属性文件而不必编写完整的文件的建议再次归档。