如何使Commons配置getList分隔符工作?

时间:2012-02-24 00:44:39

标签: java apache-commons-config

我想在Apache Commons Configuration中使用备用列表分隔符。但是,尽管尝试了许多不同的方法来访问Configuration对象并设置其列表分隔符,但我永远无法让它实际使用除默认逗号分隔符之外的任何其他内容。

我在Mac OS X上使用Commons Configuration 1.8.0版和Java 1.6.0_29。

编辑:

我需要加载一个XML配置定义文件,该文件建立一组四层配置源:

  <configuration>
      <system/>
      <properties fileName="top.properties"/>
      <properties fileName="bop.properties"/>
      <properties fileName="fop.properties"/>
  </configuration>

...我提供给DefaultConfigurationBuilder构造函数:

  val configBuilder = new DefaultConfigurationBuilder(configURL)

我在结果getConfiguration上尝试了DefaultConfigurationBuilder的两次重载。零参数版本被声明为返回Configuration,而不是AbstractConfiguration的子类(尽管它可以转换为AbstractConfiguration)而Configuration甚至不定义{ {1}}。

根据这些要求,您能否澄清一下如何控制列表分隔符?

后续:

致电setListDelimiter解决了我的问题。

兰德尔舒尔茨

1 个答案:

答案 0 :(得分:1)

要更改单个配置对象的列表分隔符,请使用方法setListDelimiter()

要更改所有配置的列表分隔符,请使用静态方法setDefaultListDelimiter()

更改分隔符只会影响新配置解析。因此,只需refresh()您的配置或仅在设置列表分隔符后加载配置文件。

示例

ListDelimiterDemo.java

import org.apache.commons.configuration.AbstractFileConfiguration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;


public class ListDelimiterDemo {

    public static void main(String[] args) throws ConfigurationException {
        AbstractFileConfiguration config = new PropertiesConfiguration();
        config.setListDelimiter('|');
        config.load("config.properties");

        for (Object listItem : config.getList("myprop")) {
            System.out.println(listItem);
        }
    }
}

config.properties:

myprop=hello|world|!

打印:

hello
world
!