Apache Commons Configuration:属性文件单反斜杠转双反斜杠问题
解决Apache Commons Configuration中属性文件单反斜杠自动转为双反斜杠的问题
嘿,这个问题我之前也碰到过!其实这是Properties文件格式的特性加上Commons Configuration默认的转义逻辑导致的——Properties里反斜杠是转义符,所以库默认会把\转成\\来符合文件语法,但如果我们需要保留单反斜杠,就得调整配置。
给你两个实用的解决方案:
直接在构建器中禁用反斜杠转义
这是最直接的方法,在初始化Parameters的时候加上setEscapeBackslash(false),告诉库不要自动转义反斜杠:FileBasedConfigurationBuilder<PropertiesConfiguration> builder = new FileBasedConfigurationBuilder<>(PropertiesConfiguration.class) .configure(new Parameters().properties() .setFileName("test.properties") .setThrowExceptionOnMissing(true) // 关键配置:关闭反斜杠自动转义 .setEscapeBackslash(false));这样当你写入属性值里的单反斜杠时,就会原封不动地保存到文件中,不会被转成双反斜杠。
用PropertiesConfigurationLayout精细控制写入格式
如果需要更灵活的文件格式控制,可以搭配PropertiesConfigurationLayout来管理写入逻辑,同样可以禁用转义:// 获取配置实例 PropertiesConfiguration config = builder.getConfiguration(); // 创建布局对象并禁用反斜杠转义 PropertiesConfigurationLayout layout = new PropertiesConfigurationLayout(config); layout.setEscapeBackslash(false); // 使用布局保存文件 layout.save(new FileWriter("test.properties"));
⚠️ 注意:禁用反斜杠转义后,Properties文件里的标准转义序列(比如\n、\t)会被当作普通字符处理,不会解析成换行或制表符。如果你的场景同时需要保留这些转义序列和原始斜杠,可能需要额外处理或者自定义序列化逻辑。
内容的提问来源于stack exchange,提问作者amitabh pandey
相关产品推荐
相关产品推荐

