【发布时间】:2018-05-16 06:45:52
【问题描述】:
我有一个 Spring 应用程序(独立的,而不是 WebApp),我正在尝试编写一个方法来将新的键/值对持久保存到 application.properties 。 这就是我所做的:
public static void AddUpdateAppSettings(String key, String value) {
File f = new File("application.properties");
try {
Properties props = new Properties();
props.load(new FileInputStream(f));
props.setProperty(key, value);
OutputStream out = new FileOutputStream(f);
DefaultPropertiesPersister p = new DefaultPropertiesPersister();
p.store(props, out, "Updated by application");
} catch (Exception e) {
Console.WriteLine("Error writing app settings");
}
}
我似乎无法解决的两个问题是:
- 所有空行都被删除(微不足道)
- 值在读/写过程中被“转义”,例如处理后
process.ClusterPrefix=####的值变成process.ClusterPrefix=\#\#\#\#
我也尝试过不使用DefaultPropertiesPersister,即只调用props.store(out,"");,结果相同
我是否需要对 InputStream 进行预处理,或者有什么方法可以关闭转义?空行呢?
编辑
如前所述,当它对称时,转义并没有什么害处,但是
这个文件应该是人工可编辑的,当读/写过程将process.backupPath=C:\Temp\Backup转换为process.backupPath=C\:TempBackup时很难
【问题讨论】:
-
Console.WriteLine是java吗? :) -
是的 - 你抓住了我 - 我写了一些简单的静态函数来使代码更适合来自 C# 的其他开发人员:)
标签: java spring properties-file