2012-02-17 2 views
2

Я работаю в веб-приложении maven. Мне нужно прочитать каталог (например: Files) в моей папке WebAPP следующим образом,Как читать каталог в папке webapp веб-приложения Maven

Java.io.File file = new Java.io.File("path"); 

Но я не знаю, как указать путь к каталогу здесь.

+0

как этот вопрос связан с Maven? –

+0

Я работаю в веб-приложении ina maven. Поэтому люди, работающие в Maven, будут знать иерархию папок в приложении maven. – Prince

+1

Ваше предположение о том, что структура каталога веб-приложений (развернутая на сервере) такая же, как ваша структура каталога maven неверна –

ответ

2

Вы не должны указывать адреса локального пути. Путь должен быть относительным адресом, например. /files/images в папке вашего веб-архива (.war).

Чтобы использовать относительные пути правильно, я предлагаю вам добавить целевую папку в Definiton ресурсов pom.xml, проверьте эти страницы http://www.mkyong.com/maven/how-to-change-maven-resources-folder-location/ http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

Вы можете обратиться к папке ресурсов легко с чем-то вроде этого :

this.class.getResource("Mydirectory/SubDirectory"); 
+0

Я пробовал, как вы сказали. Но это не работает. Файл Java.io.File = новый Java.io.File ("/ files/subdirectory"); – Prince

+0

Вы можете отправить скриншот своей иерархии каталогов веб-приложений? – Juvanis

+0

Моя иерархия каталогов веб-приложений - Myapplication/src/main/webapp/Mydirectory/SubDirectory – Prince

0

Если вы сомневаетесь, как работают родственники пути, это всегда лучше, чтобы сделать что-то вроде этого:

System.out.println(new File("/my/desired/directory").getAbsolutePath()); 

Это напечатает путь, в котором путь к классам будет искать файлы.

Предполагая:

  • сервлет контейнер WebApps реж расположен в: /var/lib/tomcat6/webapps
  • ваш веб-приложение называется my-webapp.war

Вы должны увидеть следующий вывод: /var/lib/tomcat6/webapps/my-webapp/my/desired/directory

Другой указатель: вы указали, что ищете каталог webapp. Надеюсь, вы знаете, что этот каталог не закончится в *.war - его содержимое будет.

+0

Я использую Glassfish в качестве веб-сервера – Prince

0

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

Лучшие ставки должны использовать getResource из загрузчика классов, который будет возвращать объекты в пути класса (каталог WEB-INF/lib и т. Д.) Или использовать метод ServletContext getResource() для поиска вещей в веб-приложении сам.

Смежные вопросы