У меня есть файл свойств, который, как это -Как безопасно прочитать файл свойств в Java?
[email protected]
[email protected]
# can be separated by comma
whichServer=UserServer,GuestServer
maxTestInSec=120
numberOfUsers=1000
Сейчас я читаю это свойство файла, как это в Java, который работает, если все настроено правильно -
private static final Properties prop = new Properties();
private static String emailFrom;
private static String emailTo;
private static List<String> whichServer;
private static String maxTestInSec;
private static String numberOfUsers;
public static void main(String[] args) {
readConfig(args);
}
private void readConfig(String[] args) throws FileNotFoundException, IOException {
if (!TestUtils.isEmpty(args) && args.length != 0) {
prop.load(new FileInputStream(args[0]));
} else {
prop.load(TestTask.class.getClassLoader().getResourceAsStream("config.properties"));
}
emailFrom = prop.getProperty("emailFrom").trim();
emailTo = prop.getProperty("emailTo").trim();
whichServer = Arrays.asList(prop.getProperty("whichServer").trim().split(","));
maxTestInSec = prop.getProperty("maxTestInSec").trim();
numberOfUsers = prop.getProperty("numberOfUsers").trim();
}
Постановка задачи: -
Мне нужно убедиться, что если какое-либо значение свойства отсутствует, то я хочу использовать значение по умолчанию для этого, и если по какой-либо причине это свойство закомментировано, Я хочу использовать значение по умолчанию, но я бы записал предупреждающее сообщение о том, что свойство отсутствует или пустое, поэтому используйте значения по умолчанию. Я пытаюсь охватить все случаи угла для чтения файла -
- Теперь, скажем, если я не уточняя значение любого из моего имущества в указанном файле, то я хочу, чтобы использовать значения по умолчанию для свойства который я не предоставил и не зарегистрировал в качестве предупреждения, указав, что для этого свойства не были указаны значения, поэтому используйте значения по умолчанию. Например: допустим, если я не дал никакого значения для поля
emailFrom
, тогда я хотел бы использовать значение по умолчанию как[email protected]
для этого и аналогичного для других. Значения по умолчанию для всего имущества будет:
whichServer = UserServer
maxTestInSec = 30
NUMBEROFUSERS = 500
- Кроме того, если какое-либо свойство закомментировано, то приведенный выше код будет проходить через исключение NPE. Как я могу использовать значения по умолчанию в этом сценарии?
Должен ли я использовать синтаксический анализатор командной строки для этого? Каков наилучший и чистый способ обработки этих продуктов?
Я не хочу иметь много блоков if, чтобы добавить чек, а затем установить значения по умолчанию.
Спасибо за предложение. При таком подходе, если у меня есть 20 свойств в моем файле конфигурации, значит, мне нужно иметь 40 блоков if? Есть ли другой чистый способ сделать это? – john
вы можете получить все имена свойств, используя перечисление, как показано ниже. Enumeration en = prop.propertyNames(); while (ru.hasMoreElements()) { System.out.println (ru.nextElement()); } и убедитесь, что все ваши объекты присутствуют. – robin