Вы хотите сделать это.
Во-первых, вам нужно получить ServletContext. Я не знаю, как это делается в Spring MVC, но это где-то есть.
Тогда вы можете сделать:
ServletContext ctx = getServletContextFromSpringSomehow();
String path = ctx.getRealPath("/folder/filename.txt");
FileWriter fw = new FileWriter(path);
Ключом здесь является ServletContext.getRealPath. Он дает вам путь к локальной файловой системе ресурса из вашего веб-приложения. Наблюдатель, который вы используете здесь "/", так как это URL, а не имя файла. Контейнер даст вам действительное имя файла взамен. Обратите внимание, это работает только в том случае, если ваш контейнер взорвал вашу WAR или вы развернули взорванную WAR. Если WAR НЕ взорвется, вы получите ноль обратно из контейнера.
Также обратите внимание, это БУДЕТ работать для несуществующих файлов. Контейнер не проверяет фактическое существование файла. Но вы сами создадите недостающие промежуточные каталоги и т. Д.
Наконец, конечно, даже если вы получите путь к файлу назад, это не значит, что вы действительно можете записать этот путь. Это проблема разрешения ОС за пределами области действия контейнера.