2013-04-23 4 views
6

.properties 파일에있는 속성 목록을 가져와야합니다. 예를 들어, 다음과 같은 .properties 파일이 있습니다apache.commons를 사용하여 속성 목록을 얻는 방법

users.admin.keywords = admin 
users.admin.regexps = test-5,test-7 
users.admin.rules = users.admin.keywords,users.admin.regexps 

users.root.keywords = newKeyWordq 
users.root.regexps = asdasd,\u0432[\u044By][\u0448s]\u043B\u0438\u0442[\u0435e] 
users.root.rules = users.root.keywords,users.root.regexps,rules.creditcards 

users.guest.keywords = guest 
users.guest.regexps = * 
users.guest.rules = users.guest.keywords,users.guest.regexps,rules.creditcards 

rules.cc.creditcards = 1234123412341234,11231123123123123,ca 
rules.common.regexps = pas 
rules.common.keywords = asd 

을 그리고 그 결과로이 같은 필드의 이름으로 구성되는 ArrayList를 좀하고 싶습니다 : 등등 users.admin.keywords, users.admin.regexps, users.admin.rules하고 있습니다. 아시다시피 apache.commons.config를 사용하여이 작업을 수행해야합니다.

답변

13

당신은 다음과 같이 사용할 수 있습니다

Configuration configuration = new PropertiesConfiguration(filename); 
Iterator<String> keys = configuration.getKeys(); 
List<String> keyList = new ArrayList<String>(); 
while(keys.hasNext()) { 
    keyList.add(keys.next()); 
} 
2

getKeys()을 사용할 수 있습니다.

속성 파일의 모든 키에 Iterator<String>을 반환합니다.

+0

및 방법을 반복자에서 변환 ArrayList 에? –

+0

Google 구아바를 사용할 수 있습니다. Lists.newArrayList (Iterator) – tstorms

3
Properties prop = new Properties(); 
prop.load(new FileInputStream("prop.properties")); 
Set<Map.Entry<Object, Object>> set = prop.entrySet(); 
List<Object> list = new ArrayList<>(); 
for (Map.Entry<Object, Object> entry : prop.entrySet()) 
{ 
    list.add(entry.getKey()); 
} 
System.out.println(list); 

사용하여 아파치 코 몬즈 버전 < 2.1 :

Configuration config = new PropertiesConfiguration("prop.properties"); 
List<String> list = new ArrayList<>(); 
Iterator<String> keys = config.getKeys(); 
while(keys.hasNext()){ 
    String key = (String) keys.next(); 
    list.add(key); 
} 

편집 아파치 커먼즈 버전 2.1 :

List<String> list = new ArrayList<>(); 
Parameters params = new Parameters(); 
FileBasedConfigurationBuilder<FileBasedConfiguration> builder = 
    new FileBasedConfigurationBuilder<FileBasedConfiguration> 
    (PropertiesConfiguration.class) 
    .configure(params.properties() 
    .setFileName("prop.properties")); 
try 
{ 
    Configuration config = builder.getConfiguration(); 
    Iterator<String> keys = config.getKeys(); 
    while(keys.hasNext()){ 
     String key = (String) keys.next(); 
     list.add(key); 
    } 
} 
catch(ConfigurationException cex) 
{ 
    // handle exception here 
} 
+0

수정 된 응답을 참조하십시오! – NINCOMPOOP

+0

일반적인 구성의 2.1 버전을 찾았으므로 PropertiesConfiguration의 생성자는 인수를 허용하지 않습니다. 그 취향에 맞는 응답을 보내 주시겠습니까? – Scalable

+0

@Scalable 편집의 정확성을 확인하십시오. – NINCOMPOOP