Лучший способ прочитать файл свойств в Java? - PullRequest
2 голосов
/ 25 марта 2011

Мне известны два способа чтения файла .properties:

1 - System.getProperties.load (входной поток для файла .properties);

2 - Создание нового объекта Properties и последующий вызов load (Inputstream для файла .properties);

При первом подходе мы собираемся сохранить значения файла .properties в объекте System. Использует ли это больше ресурсов?

Хотелось бы узнать, какой способ лучше всего сделать, или помимо двух вышеуказанных способов, если есть другой способ, пожалуйста, дайте мне знать.

Спасибо.

Ответы [ 3 ]

9 голосов
/ 25 марта 2011

Зависит от того, что представляет файл свойств.Если он представляет системные свойства, которые должны переопределить / предоставить некоторые системные свойства по умолчанию, то перейдите к первому подходу.Но если он представляет специфичные для приложения свойства (что чаще всего является обычным случаем), тогда перейдите ко второму подходу.

0 голосов
/ 22 ноября 2013

мы будем читать файлы свойств, используя URl ...

 Properties props = new Properties();
 try
 {
     java.net.URL url = Thread.currentThread().getContextClassLoader().getResource(fileName);
    java.net.URL url2 = ClassLoader.getSystemResource(fileName);
     props.load(url.openStream());
 }
 catch (FileNotFoundException e)
 {
     // TODO Auto-generated catch block
     e.printStackTrace();
 }
 catch (IOException e)
 {
     // TODO Auto-generated catch block
     e.printStackTrace();
 }
 return props;
0 голосов
/ 25 марта 2011

IMO, это ПЛОХАЯ идея загрузить свойства приложения в объект System properties.Если кто-то поместит фиктивные значения свойств в загружаемый файл, это может привести к разного рода неясным ошибкам.Например, если установить для «java.home» фиктивное значение, JavaMail может перестать работать, а установка одного из свойств «* .separator» может привести к странным действиям.необходимо «наложить» системные свойства, тогда было бы лучше сделать это:

    Properties props = new Properties(System.getProperties());
    props.load(someInputStream);

Если этого не произойдет, просто загрузите свойства следующим образом:

    Properties props = new Properties();
    props.load(someInputStream);

Если по какой-то причине вам необходимо переопределить значения в самом объекте «Системные свойства», вам следует делать это более осторожно / выборочно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...