我正在尝试从配置文件中获取属性。
我在org.apache.commons包中使用了PropertiesConfiguration。
我的代码:
public static void main(String[] args) {
PropertiesConfiguration config = new PropertiesConfiguration();
PropertiesConfigurationLayout layout = new PropertiesConfigurationLayout();
try {
layout.load(config, new InputStreamReader(new FileInputStream("/path/to/file/file.ini")));
layout.save(config, new OutputStreamWriter(new FileOutputStream("/path/to/file/file.ini")));
} catch (ConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
但是我的文件在开头看起来像:
# file.ini
# Comment 1
# Comment 2
[DEFAULT]
# Comment 3
[Section.1]
# param_1
param_1 : value1.1
# param_2
param_2 : value1.2
[Section.2]
# param_1
param_1 : value2.1
# param_2
param_2 : value2.2
在我保存之后,它看起来像:
# file.ini
# Comment 1
# Comment 2
[DEFAULT]
# Comment 3
[Section.1]
# param_1
# param_1
param_1 : value1.1
param_1 : value2.1
# param_2
# param_2
param_2 : value1.2
param_2 : value2.2
[Section.2]
我想保持相同的布局,但我找不到任何解决方案。
答案 0 :(得分:0)
基于意见的回答:当战斗工具时要小心:因为人们很容易花费(浪费)大量时间来弯曲工具做一些它没有设计的东西。
特别是在这样的情况下 - 你有一些人类可读的输入似乎经常被机器重写" ...小心不要浪费你的时间。
也许那个"属性作家"代码有充分的理由完全按照今天的工作方式工作。所以,只是可能:而不是改变写入过程;你可以理解写过程所应用的转换。从那里:你以一种
的方式重写你的初始输入a)仍然可以为您提供良好的“人类可读性”#34;经验
b)在" save"之后不会进行这样的转换。操作
然后双方(人和机器)可以继续更新基础文件。
另一种选择:考虑忽略"已保存的"版本:保持"您的版本"在您的源代码管理工具中;并在"运行时系统上接受这些文件"看起来不一样(因为他们是"重做工作"通过工具在某些时候)。