首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache Commons配置

Apache Commons配置
EN

Stack Overflow用户
提问于 2020-07-15 23:50:51
回答 1查看 261关注 0票数 0

我正在尝试使用Apache Commons读取配置文件,修改一些属性,然后保存配置文件。

这是代码片段

代码语言:javascript
复制
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代码段

代码语言:javascript
复制
        <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"在配置文件中没有正确转义。所有额外的反斜杠都存在于配置文件中。我已经阅读了所有的文档,上面的文档似乎是转义特殊字符的正确方法。

Apache Documentation

如果我使用Java内置属性类,字符串"jdbc:oracle:thin:@localhost:1521:db"将自动转义一次存储(jdbc\:oracle\:thin\:@localhost\:1521\:db),但是我必须使用Apache配置,否则我将丢失配置文件中的所有注释。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-07-16 04:05:05

在.properties文件中,您必须同时转义\:。因此,您在.properties文件中应该具有的是jdbc\\\:oracle\\\:thin\\\:@localhost\\\:1521\\\:db)。

为了实现这一点,您可以将PropertiesConfiguration转换为java.util.Properties并保存它们,并且只在读取时使用commons配置。

您可以使用ConfigurationConverter来做到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62918811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档