当属性键为多个值时,返回相同的布局

时间:2016-06-03 09:17:25

标签: java properties

我正在尝试从配置文件中获取属性。

我在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]

我想保持相同的布局,但我找不到任何解决方案。

1 个答案:

答案 0 :(得分:0)

基于意见的回答:当战斗工具时要小心:因为人们很容易花费(浪费)大量时间来弯曲工具做一些它没有设计的东西。

特别是在这样的情况下 - 你有一些人类可读的输入似乎经常被机器重写" ...小心不要浪费你的时间。

也许那个"属性作家"代码有充分的理由完全按照今天的工作方式工作。所以,只是可能:而不是改变写入过程;你可以理解写过程所应用的转换。从那里:你以一种

的方式重写你的初始输入

a)仍然可以为您提供良好的“人类可读性”#34;经验

b)在" save"之后不会进行这样的转换。操作

然后双方(人和机器)可以继续更新基础文件。

另一种选择:考虑忽略"已保存的"版本:保持"您的版本"在您的源代码管理工具中;并在"运行时系统上接受这些文件"看起来不一样(因为他们是"重做工作"通过工具在某些时候)。