我正在尝试使用Apache Commons读取配置文件,修改一些属性,然后保存配置文件。
这是代码片段
Configurations propConfig= new Configurations();
try {
FileBasedConfigurationBuilder<PropertiesConfiguration> builder=
propConfig.propertiesBuilder(pathToPropFile);
propConfig.setProperty("dtv.primary.db.url","jdbc\\:oracle\\:thin\\:@localhost\\:1521\\:db");
builder.save();
return 0;
} catch (ConfigurationException e) {
e.printStackTrace();
return -1;
}pom.xml代码段
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>问题是字符串"jdbc\\:oracle\\:thin\\:@localhost\\:1521\\:db"在配置文件中没有正确转义。所有额外的反斜杠都存在于配置文件中。我已经阅读了所有的文档,上面的文档似乎是转义特殊字符的正确方法。
如果我使用Java内置属性类,字符串"jdbc:oracle:thin:@localhost:1521:db"将自动转义一次存储(jdbc\:oracle\:thin\:@localhost\:1521\:db),但是我必须使用Apache配置,否则我将丢失配置文件中的所有注释。
有什么建议吗?
发布于 2020-07-16 04:05:05
在.properties文件中,您必须同时转义\和:。因此,您在.properties文件中应该具有的是jdbc\\\:oracle\\\:thin\\\:@localhost\\\:1521\\\:db)。
为了实现这一点,您可以将PropertiesConfiguration转换为java.util.Properties并保存它们,并且只在读取时使用commons配置。
您可以使用ConfigurationConverter来做到这一点。
https://stackoverflow.com/questions/62918811
复制相似问题