Использование относительных путей к файлам - плохая идея, поскольку они зависят от текущего рабочего каталога (текущего открытого каталога при запуске приложения Java), и у вас есть нет контроля над текущим рабочим каталогом. изнутри приложения Java.
Вы должны просто поместить его в путь к классам и получить его из пути к классам:
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("resource.txt");
// ...
В приведенном выше примере предполагается, что файл помещен в корневой каталог classpath. Если это, например, пакет com.example.resources
, то вы должны получить его следующим образом:
InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/example/resources/resource.txt");
// ...
Если файл предполагается редактируемым, вам следует использовать абсолютный путь к файловой системе диска и правильно документировать его в руководстве по установке вашего веб-приложения. Альтернативой является использование базы данных.
Смотри также: