Для вызова getResourceAsStream
в статическом методе мы используем ClassName.class
вместо getClass()
1. В нестатическом методе
getClass().getClassLoader().getResourceAsStream("config.properties"))
2. В статическом методе
ClassName.class.class.getClassLoader().getResourceAsStream("config.properties"))
1. Нестатический Метод
Файл .свойства
в пути к классам проекта.
#config file json.filepath = /Users/mkyong/Documents/workspace/SnakeCrawler/data/
package com.mkyong; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class FileHelper { public static void main(String[] args) { FileHelper obj = new FileHelper(); System.out.println(obj.getFilePathToSave()); } public String getFilePathToSave() { Properties prop = new Properties(); String result = ""; try (InputStream inputStream = getClass() .getClassLoader().getResourceAsStream("config.properties")) { prop.load(inputStream); result = prop.getProperty("json.filepath"); } catch (IOException e) { e.printStackTrace(); } return result; } }
Выход
/Users/mkyong/Documents/workspace/SnakeCrawler/data/
2. Статический Метод
Если метод получить путь к файлу Для сохранения()
преобразуется в статический метод, метод getClass()
завершится ошибкой, и запросы Не смогут сделать статическую ссылку на нестатический метод getClass() из типа Объект
Чтобы исправить это , обновите getClass()
до Чтобы исправить это
package com.mkyong; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class FileHelper { public static void main(String[] args) { System.out.println(getFilePathToSaveStatic()); } public static String getFilePathToSaveStatic() { Properties prop = new Properties(); String result = ""; try (InputStream inputStream = FileHelper.class .getClassLoader().getResourceAsStream("config.properties")) { prop.load(inputStream); result = prop.getProperty("json.filepath"); } catch (IOException e) { e.printStackTrace(); } return result; } }
Выход
/Users/mkyong/Documents/workspace/SnakeCrawler/data/
Рекомендации
- Примеры файлов свойств Java
- Загрузчик классов JavaDocs
Оригинал: “https://mkyong.com/java/java-getresourceasstream-in-static-method/”