У меня есть следующий код, который пытается прочитать файл свойств:
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)
спасибо, Никос
java
properties
Никос
источник
источник
getResourceAsStream
ищет файл в пути к классам. Если ваш файл свойств находится в каталоге пакетаmyPackage
, используйте/myPackage/myProp.properties
в качестве пути.conf
пакет для хранения всех моих файлов конфигурации, и моя файловая иерархия:,myproject ->src, conf, test
как мне загрузить свойства, добавив предшествующую косую черту?Вы можете найти информацию на этой странице:
http://www.mkyong.com/java/java-properties-file-examples/
источник
Reader
вprop.load(reader)
соответствии с документацией:The specified stream remains open after this method returns
Вы можете использовать
ResourceBundle
класс для чтения файла свойств.источник
conf/filename.properties
база на корневом каталоге проектаисточник
Вы не можете использовать это ключевое слово как -
в статическом контексте.
Лучше всего было бы получить контекст приложения, например -
тогда вы можете загрузить файл ресурсов из пути к классам -
Это будет работать как для статического, так и для нестатического контекста, и самое приятное то, что этот файл свойств может находиться в любом пакете / папке, включенной в путь к классам приложения.
источник
Ваш файл должен быть доступен как
com/example/foo/myProps.properties
в пути к классам. Затем загрузите его как:источник
если ваш config.properties не находится в каталоге src / main / resource и находится в корневом каталоге проекта, вам нужно сделать что-то вроде ниже: -
источник
Убедитесь, что имя файла правильное и что файл действительно находится в пути к классу.
getResourceAsStream()
вернет null, если это не тот случай, когда последняя строка выбрасывает исключение.Если myProp.properties находится в корневом каталоге вашего проекта, используйте
/myProp.properties
вместо него.источник
Вы можете использовать java.io.InputStream для чтения файла, как показано ниже:
источник
Учитывая контекст,
loader.getResourceAsStream("myPackage/myProp.properties")
следует использовать.Ведение
'/'
не работает сClassLoader.getResourceAsStream(String)
методом.В качестве альтернативы вы можете использовать
Class.getResourceAsStream(String)
метод, который используется'/'
для определения, является ли путь абсолютным или относительно местоположения класса.Примеры:
источник
Если ваш путь к файлу свойств и путь к вашему классу java совпадают, вам следует это сделать.
Например:
источник
Ни один из текущих ответов не показывает, что
InputStream
он закрыт (это приведет к утечке дескриптора файла) и / или не имеет дело с.getResourceAsStream()
возвратом null, когда ресурс не найден (это приведет к появлениюNullPointerException
сбивающего с толку сообщения"inStream parameter is null"
). Вам понадобится что-то вроде следующего:источник
Для чтения файла свойств в исходном порядке:
источник
Многие ответы здесь описывают опасные методы, в которых они создают экземпляр входного потока файла, но не получают ссылку на входной поток, чтобы закрыть поток позже. Это приводит к зависанию входных потоков и утечкам памяти. Правильный способ загрузки свойств должен выглядеть следующим образом:
Обратите внимание на создание экземпляра входного потока файла в
try-with-resources
блоке. Поскольку aFileInputStream
закрывается автоматически, он будет автоматически закрыт после выхода изtry-with-resources
блока. Если вы хотите использовать простойtry
блок, вы должны явно закрыть его, используяfis.close();
вfinally
блоке.источник
Вижу, вопрос старый. Если кто-то наткнется на это в будущем, я думаю, что это один простой способ сделать это. Сохраните файл свойств в папке вашего проекта.
источник
Укажите путь, начиная с src, как показано ниже:
источник