2012-02-24 3 views
2

Apache Commons Configuration에서 대체 목록 구분 기호를 사용하고 싶습니다. 그러나 Configuration 객체에 액세스하고 목록 구분 기호를 설정하는 여러 가지 방법을 시도해 보았지만 실제로는 기본 쉼표 구분 기호 이외의 다른 것을 사용하지 못하게되었습니다.커먼 구성의 setListDelimiter를 작동시키는 방법은 무엇입니까?

나는 맥 OS X의에서 Java 1.6.0_29로 커먼즈 구성 버전 1.8.0을 사용하고

편집 : 나는 네 계층 세트를 설정 XML 구성 정의 파일을로드 할 필요

구성 소스 :

나는 DefaultConfigurationBuilder 생성자에 공급
<configuration> 
     <system/> 
     <properties fileName="top.properties"/> 
     <properties fileName="bop.properties"/> 
     <properties fileName="fop.properties"/> 
    </configuration> 

... :

val configBuilder = new DefaultConfigurationBuilder(configURL) 

나는 DefaultConfigurationBuildergetConfiguration의 두 오버로드를 시도했습니다. 0 인수 버전은 AbstractConfiguration의 하위 클래스가 아니지만 Configuration을 반환하도록 선언되었습니다 (AbstractConfiguration에 캐스트 할 수 있음). ConfigurationsetListDelimiter을 정의하지 않습니다.

이러한 요구 사항을 감안할 때 목록 구분 기호를 제어 할 수있는 방법을 명확히 할 수 있습니까?

FOLLOW-UP :

AbstractConfiguration.setDefaultListDelimiter(listDelim) 호출 나를 위해 문제를 해결했다. 랜달 슐츠

답변

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 
! 
+0

구분 기호는 나를 위해 작동합니다. 감사. – CreativeMind