2013-08-14 4 views
0

Я хочу прочитать строку из файла свойств jdbc.properties. Он находится в src\main\webapp\WEB-INF\db\jdbc.properties. Какой путь я должен использовать? Это мой метод:Как читать из файла свойств?

Properties prop = new Properties(); 

     try { 
      // load a properties file 
      prop.load(new FileInputStream("jdbc.properties")); 

      System.out.println(prop.getProperty("password")); 

     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
+0

Поместите файл свойств внутри 'src/main/resources' и получите доступ к нему с помощью загрузчика классов. –

+0

Но я думал, что каждый может увидеть мои данные, если это не в webinf. Есть мой пароль. – Tony

+0

Когда ваш источник скомпилирован, файлы классов и все в 'src/main/resources' будут помещены в' WEB-INF/classes', поэтому не стоит беспокоиться. –

ответ

4

Если вы перемещаете файл свойств src/main/resources, предполагая, что ваш проект управляется мавена, то вы могли бы получить его, делая

Properties prop = new Properties(); 

try { 
    // load a properties file 
    prop.load(YourClass.class.getResourceAsStream("/jdbc.properties")); // note the leading/

    System.out.println(prop.getProperty("password")); 

} catch (IOException ex) { 
    ex.printStackTrace(); 
} 

где YourClass является то, что класс этот код в.

Maven помещает файлы классов ваших скомпилированных классов и всех ресурсов в src/main/resources в WEB-INF/classes, где только ваше приложение может получить к ним доступ.

Если вы поместите файл в src/main/resources/someFolder, вам нужно получить к нему доступ из

prop.load(YourClass.class.getResourceAsStream("/someFolder/jdbcProperties")); 

Путь вы предоставляете выше метода является относительно пакета класса вы находитесь, если вы не указали ведущий косой чертой, и в этом случае он будет относиться к корню пути к классам, то есть classes.

2

Вы должны указать абсолютный путь к FileInputStream. Вы можете получить путь по телефону servletContext.getRealPath("/WEB-INF/db/jdbc.properties")

Если вы не имеете servletContext доступный (через .getServletContext()), то вы должны передать его (или абсолютный путь к корню приложения) к коду выше.

+0

servletContext не может быть разрешен – Tony

+0

Я добавил второй абзац. Я не знаю, где находится ваш код, поэтому я предположил, что он находится в сервлете. – Bozho

+0

Использование Class.getResourceAsStream –

0

Установлена ​​ли переменная окружения для TOMCAT_HOME, если она не установлена.

Теперь вы можете использовать

<tomcat_home>/webapps/<yourapp>/web-inf/db/jdbc.properties

Чтобы получить значение переменной среды использования следующий код:

Map<String, String> env = System.getenv(); 

Ура !!

Смежные вопросы