Java 如何使用apache.commons获取属性列表

Java 如何使用apache.commons获取属性列表,java,apache-commons-config,Java,Apache Commons Config,我需要获取.properties文件中的属性列表。例如,如果具有以下.properties文件: 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[\u044

我需要获取.properties文件中的属性列表。例如,如果具有以下.properties文件:

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执行此操作

它在属性文件中的所有键上返回一个迭代器。

properties prop=newproperties();
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);
prop.load(新文件输入流(“prop.properties”); Set=prop.entrySet(); 列表=新的ArrayList(); 对于(Map.Entry:prop.entrySet()) { list.add(entry.getKey()); } 系统输出打印项次(列表);
使用Apache Commons版本时,您可以按如下方式使用:

Configuration configuration = new PropertiesConfiguration(filename);
Iterator<String> keys = configuration.getKeys();
List<String> keyList = new ArrayList<String>();
while(keys.hasNext()) {
    keyList.add(keys.next());
}
Configuration=新属性配置(文件名);
迭代器键=configuration.getKeys();
List keyList=new ArrayList();
while(keys.hasNext()){
添加(keys.next());
}

以及如何从迭代器转换为ArrayList?您可以使用google guava,例如Lists.newArrayList(迭代器)。
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
}
Configuration configuration = new PropertiesConfiguration(filename);
Iterator<String> keys = configuration.getKeys();
List<String> keyList = new ArrayList<String>();
while(keys.hasNext()) {
    keyList.add(keys.next());
}