Получить количество записей в файле свойств apache commons - PullRequest
0 голосов
/ 01 марта 2020

Я создаю список IP-адресов для пинга, в котором пользователь может добавить его в список, который затем сохраняется в файле свойств в виде site.name1 = ... site.name2 = ...

В настоящее время у меня есть для l oop с фиксированной суммой, есть ли способ получить количество записей в файле свойств, чтобы я мог установить это в для l oop, а не ждать исключение?

 PropertiesConfiguration config = configs.properties(new File("IPs.properties"));
            //initially check for how many values there are - set to max increments for loop
            for (int i = 0; i < 3; i++) { //todo fix
                siteName = config.getString("site.name" + i);
                siteAddress = config.getString("site.address" + i);
                SiteList.add(i, siteName);
                IPList.add(i, siteAddress);
            }

Я просмотрел документацию и другие вопросы, но они, похоже, не связаны.

1 Ответ

0 голосов
/ 01 марта 2020

Мне кажется, основываясь на документации, вы должны иметь возможность использовать PropertiesConfiguration # getLayout # getKeys для получения набора всех ключей в виде строки.

Мне пришлось немного изменить код, чтобы использовать apache -commons-configuration-1.10

        PropertiesConfiguration config = new PropertiesConfiguration("ips.properties");

        PropertiesConfigurationLayout layout = config.getLayout();

        String siteName = null;

        String siteAddress = null;

        for (String key : layout.getKeys()) {
            String value = config.getString(key);

            if (value == null) {
                throw new IllegalStateException(String.format("No value found for key: %s", key));
            }
            if (key.equals("site.name")) {
                siteName = value;
            } else if (key.equals("site.address")) {
                siteAddress = value;
            } else {
                throw new IllegalStateException(String.format("Unsupported key: %s", key));
            }
        }
        System.out.println(String.format("name=%s, address=%s", siteName, siteAddress));
...