В данном случае мне надо достать значения из файла .properties. Я могу использовать для этого FileInputStream:
FileInputStream fis = new FileInputStream("src/main/resources/config.properties");
А могу обычный InputStream:
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("src/main/resources/initialData.properties");
В чем между ними разница?
FileInputStream
- это поток ввода из файла, а InputStream
- это просто поток ввода, откуда угодно. Но в вашем примере разница не в уровне абстракции потоков, а в способе доступа к ресурсам. В случае использования FileInputStream("src/main/resources/config.properties")
вы сможете читать файл только в том случае, если в рабочем каталоге вашего приложения обязательно есть каталог src
с соответствующими подкаталогами, содержащими необходимый файл. Что перестанет быть истинной после упаковки приложения в jar-файл. По крайней мере без дополнительных манипуляций с вашей стороны. Использование же getResourceAsStream
позволит получить данные как из файла в каталоге, так и из jar-файла. Только путь придётся поменять с src/main/resources/initialData.properties
на просто initialData.properties
. Подробнее об именовании ресурсов можно почитать здесь.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Как бороться с такой ошибкой? При выборе 31 числа на месяц назад или вперёдЯ ставлю на диалоге даты 31 октября, а ошибка на сентябрь идёт