Чтение файла свойств в Java - PullRequest
97 голосов
/ 27 ноября 2011

У меня следующий код, пытающийся прочитать файл свойств:

Properties prop = new Properties();
ClassLoader loader = Thread.currentThread().getContextClassLoader();           
InputStream stream = loader.getResourceAsStream("myProp.properties");
prop.load(stream);

В последней строке я получаю исключение.В частности:

Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at Assignment1.BaseStation.readPropertyFile(BaseStation.java:46)
at Assignment1.BaseStation.main(BaseStation.java:87)

спасибо, Никос

Ответы [ 15 ]

1 голос
/ 15 февраля 2019

Для файла свойств чтения с исходным порядком:

    File file = new File("../config/edc.properties");
    PropertiesConfiguration config = new PropertiesConfiguration();
    PropertiesConfigurationLayout layout = new PropertiesConfigurationLayout(config);
    layout.load(new InputStreamReader(new FileInputStream(file)));

    for(Object propKey : layout.getKeys()){
        PropertiesConfiguration propval =  layout.getConfiguration();
        String value = propval.getProperty((String) propKey).toString();
        out.print("Current Key:" + propkey + "Current Value:" + propval + "<br>");
    }
0 голосов
/ 14 марта 2019

, если ваш config.properties не находится в каталоге src / main / resource и находится в корневом каталоге проекта, тогда вам нужно сделать что-то вроде ниже: -

Properties prop = new Properties();          
File configFile = new File(myProp.properties);
InputStream stream = new FileInputStream(configFile);
prop.load(stream);
0 голосов
/ 06 марта 2019

Укажите путь, начиная с src, как показано ниже:

src/main/resources/myprop.proper
0 голосов
/ 19 февраля 2019

Многие ответы здесь описывают опасные методы, в которых они создают поток ввода файла, но не получают ссылку на поток ввода, чтобы позже закрыть поток.Это приводит к зависанию входных потоков и утечкам памяти.Правильный способ загрузки свойств должен быть следующим:

    Properties prop = new Properties();
    try(InputStream fis = new FileInputStream("myProp.properties")) {
        prop.load(fis);
    }
    catch(Exception e) {
        System.out.println("Unable to find the specified properties file");
        e.printStackTrace();
        return;
    }

Обратите внимание на создание экземпляра потока ввода файла в блоке try-with-resources.Так как FileInputStream является автозаполняемым, он будет автоматически закрыт после выхода из блока try-with-resources.Если вы хотите использовать простой блок try, вы должны явно закрыть его, используя fis.close(); в блоке finally.

0 голосов
/ 01 декабря 2018

Если ваш путь к файлу свойств и путь к классу Java одинаковы, вам следует это сделать.

Например:

src / myPackage / MyClass.Java

src / myPackage / MyFile.properties

Properties prop = new Properties();
InputStream stream = MyClass.class.getResourceAsStream("MyFile.properties");
prop.load(stream);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...