Как перезагрузить файл свойств в Java
Любой, пожалуйста, помогите мне по перезагрузке файла свойств. у меня есть такой код
Properties prop = new Properties();
InputStream trackerFileStream =
LoadProperty.class.getClassLoader().getResourceAsStream("sample.properties");
prop.load(trackerFileStream);
После загрузки файла свойств через загрузчик классов, я изменяю файл свойств. Я не могу получить последние изменения в том же исполнении программы.
Может ли кто-нибудь, пожалуйста, предложить мне, как перезагрузить файл свойств без повторного выполнения программы.
2 ответа
Если вы хотите обновиться, вам нужно время от времени проверять ресурс и перезагружать свойства.
Проблема в том, что вы загружаете свойства из classpath. Если вы используете файловую систему, вы можете проверить последний измененный атрибут файла и решить, нужно ли его перезагрузить. В Java 7 вы можете зарегистрировать слушатель, который перезвонит вам, когда файл будет изменен. Вы не можете сделать это при загрузке ресурса.
Но вы можете сделать лучше. Используйте конфигурационный пакет от Apache. Он уже реализует логику перезагрузки, так что вы можете просто работать с "конфигурацией", фактически сопоставленной с ресурсом, и быть уверенным, что вы всегда получаете обновленные данные.
Вы закрываете / очищаете свои потоки правильно? Зачем использовать classloader для доступа к файлу? Если файл является внешним файлом, вы должны получить к нему доступ через обычный FileInputStream
например