我想在Apache Commons配置中使用备用列表分隔符。然而,尽管尝试了许多不同的方法来访问配置对象并设置其列表分隔符,但我永远无法让它实际使用默认逗号分隔符以外的任何东西。
我在Mac OS X上使用带有Java 1.6.0_29的Commons Configuration 1.8.0版本。
编辑:
我需要加载一个XML配置定义文件,该文件建立了一组四层的配置源:
<configuration>
<system/>
<properties fileName="top.properties"/>
<properties fileName="bop.properties"/>
<properties fileName="fop.properties"/>
</configuration>
我提供给DefaultConfigurationBuilder
构造函数:
val configBuilder = new DefaultConfigurationBuilder(configURL)
我已经在生成的DefaultConfigurationBuilder
上尝试了getConfiguration
的两个重载。零arg版本被声明为返回Configuration
,而不是AbstractConfiguration
的子类(尽管它可以强制转换为AbstractConfiguration
),并且Configuration
甚至不定义setListDelimiter
。
你能澄清一下,鉴于这些要求,我如何控制列表分隔符吗?
随访:
呼叫AbstractConfiguration.setDefaultListDelimiter(listDelim)
为我解决了问题。
Randall-Schulz
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
!