Использование методов File API для файлов, расположенных на моем сервере - PullRequest
1 голос
/ 11 мая 2011

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

File dir = new File(new URI("file://localhost:8084/myapp/Dir"));

  File[] files = dir.listFiles();

    for (File f : files) {
        System.out.println(f.getAbsolutePath());

это просто пример, но я хочу использовать Java File API.

Я получаю эту ошибку, когда я помещаю этот код всервлет:

11 mai 2011 10:02:15 org.apache.catalina.core.StandardWrapperValve invoke "Servlet.service()" pour la servlet tests a généré une exception java.lang.IllegalArgumentException: URI has an authority component at java.io.File.<init>(File.java:385)

Я не знаю, что это значит.

Я также пробовал File dir = new File("Dir") ; и File dir = new File("web/Dir") и даже File dir = new File(new URI(http://localhost:8084/myapp/Dir));

но Dir не найден.Я не понимаю, и я схожу с ума (жаль .. извините).

когда я набираю http://localhost:8084/myapp/Dir в моем веб-браузере, отображается содержимое Dir. Так что Dir действительно включен http://localhost:8084/myapp/

Мне действительно нужна резервная копия.Заранее спасибо.

1 Ответ

2 голосов
/ 11 мая 2011

Предполагая, что ваше веб-приложение развернуто как распакованная война, вы можете использовать getRealPath() для объекта ServletContext, чтобы получить реальный путь к файловой системе для данного пути веб-приложения.

Итак, внутри вашего сервлета:

File dir = new File(getServletContext().getRealPath("/Dir"));

См. Javadoc .

Обратите внимание, что это не очень хорошая практика и не будет работать на любом сервере приложений, который не распаковывает свои WAR-файлы в файловую систему перед запуском (например, Google App Engine).

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