2

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

我在 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。零参数版本被声明为 return ,而不是(尽管它可以强制转换为)Configuration的子类,甚至没有定义。AbstractConfigurationAbstractConfigurationConfigurationsetListDelimiter

你能澄清一下,鉴于这些要求,我可以如何控制列表分隔符吗?

跟进:

打电话AbstractConfiguration.setDefaultListDelimiter(listDelim)为我解决了问题。

兰德尔·舒尔茨

4

1 回答 1

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);
        }
    }
}

配置属性:

myprop=hello|world|!

印刷:

hello
world
!
于 2012-02-24T08:29:17.597 回答