Создайте файл и сохраните в папке веб-приложения Java - PullRequest
4 голосов
/ 04 июня 2010

Я хотел бы создать XML-файл и сохранить его в папке в моем весеннем веб-приложении Mvc.

Я могу получить рут моего приложения с помощью request.getContextPath()

но

как получить относительный путь к приложению, чтобы оно работало на любом компьютере независимо от расположения папки приложения?

Как C:/folder/folder/MYAPPLICATIONROOTFOLDER

Ответы [ 2 ]

7 голосов
/ 04 июня 2010

Вы хотите сделать это.

Во-первых, вам нужно получить ServletContext. Я не знаю, как это делается в Spring MVC, но это где-то есть.

Тогда вы можете сделать:

ServletContext ctx = getServletContextFromSpringSomehow();
String path = ctx.getRealPath("/folder/filename.txt");
FileWriter fw = new FileWriter(path);

Ключом здесь является ServletContext.getRealPath. Он дает вам путь к локальной файловой системе ресурса из вашего веб-приложения. Наблюдатель, который вы используете здесь "/", так как это URL, а не имя файла. Контейнер даст вам действительное имя файла взамен. Обратите внимание, это работает только в том случае, если ваш контейнер взорвал вашу WAR или вы развернули взорванную WAR. Если WAR НЕ взорвется, вы получите ноль обратно из контейнера.

Также обратите внимание, это БУДЕТ работать для несуществующих файлов. Контейнер не проверяет фактическое существование файла. Но вы сами создадите недостающие промежуточные каталоги и т. Д.

Наконец, конечно, даже если вы получите путь к файлу назад, это не значит, что вы действительно можете записать этот путь. Это проблема разрешения ОС за пределами области действия контейнера.

1 голос
/ 04 июня 2010

Одним из решений является связывание XML с предложениями в JAR / WAR, а затем использование getResourceAsStream () для использования ClassLoader для определения местоположения файла.

Если я помещу файл foo.xml с классами в com / stackoverflow / example, я смогу затем найти ресурсы из объектов в этом наборе с помощью

InputStream is = MyClass.getResourceAsStream( "com/stackoverflow/example" );

и отсюда обработайте файл с помощью парсера XML или чего-либо еще, что вы хотели сделать, чтобы прочитать файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...