resources в tomcat

301
07 июля 2017, 04:57

В IDEA до сборки проекта, я сохраняю свой файл (например, properties) в папку resources:


Затем, обратиться к этому файлу из кода программы я могу так:

this.getClass().getClassLoader().getResourceAsStream("settings.properties")

Когда я забрасываю war на сервер, после распаковки этот файл лежит прямо в:

/var/lib/tomcat8/webapps/<project>/WEB-INF/classes/settings.properties

Почему так? Хотя до упаковки проекта, файл лежит в папке:

.../IdeaProjects/<project>/src/main/resources/settings.properties

К чему я всё это спрашиваю: мне нужно будет позже, из кода программы, например, скачивать какие-то файлы, или сохранять результат (ещё какие-то свои файлы) в определенную папку. Я думал, что всё это тоже будет храниться в какой-то папке resources где-то в глубине проекта. Я хотел, чтобы не было абсолютных путей, и если я надумаю что-то переместить, ну и так далее, чтобы относительный путь не менялся.
Что происходит на деле: я попытался сохранить свой файл так:

File file = new File(this.getClass().getClassLoader().getResource(".").getFile() + "/test.txt");
file.createNewFile();

Файл создаётся, всё хорошо, но... создаётся он в:

/var/lib/tomcat8/lib/test.txt

И тут я совсем запутался. До этого я вызывал уже имеющийся в проекте файл из ресурсов, он брался из другой папки, а теперь он лежит здесь почему-то.

А вот new File(".").getAbsolutePath() возвращает /var/lib/tomcat8/.

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

Спасибо заранее.

READ ALSO
RingtoneManager.ACTION_RINGTONE_PICKER возвращает Intent = null на версиях API &lt; 21

RingtoneManager.ACTION_RINGTONE_PICKER возвращает Intent = null на версиях API < 21

При вызове кода на версиях API <= 21 в onActivityResult (Intent data = null), на более старших версиях всё отлично работаетНе могу понять в чем проблема

200
Проигрывание музыки в Java Swing

Проигрывание музыки в Java Swing

Подскажите пожалуйста механизмы, библиотеки для работы со звуками, а именно проигрывание аудио mp3 и тд

288
Алгоритм бинарной кластеризации DBCAN

Алгоритм бинарной кластеризации DBCAN

У меня есть двоичный матрица с размером примерно 100К х 98ККаждая строка это Значение , а столбец это Свойство

192
Как настроить .htaccess в веб приложении на Java Spring MVC

Как настроить .htaccess в веб приложении на Java Spring MVC

подскажите как настроить доступ для администратора (хранить логин и пароль) к ГURL веб-приложения вhtaccess ? есть веб приложение, написанное на Java с использованием...

300