2015-01-29 3 views
0

У меня есть файл в формате PDF в моем веб-проекта на месте ниже:Невозможно проверить, если файл существует или нет в веб-проекте

«статический/Файлы для загрузки/20/Home_insurance_booklet.pdf»

«статические» присутствует в WebContent. Корень контекста проекта - «pas».

В одном из jsp мне нужно проверить, существует ли файл Home_insurance_booklet.pdf или нет. Я пытался разными способами, но не смог добиться успеха. Ниже приведен код, который я использовал.

String filePath = request.getContextPath()+"/static/Downloadables/20/Home_insurance_booklet.pdf"; 
if(new File(filePath.toString()).exists()) { 
------ 
} 

Через файл существует условие возвращает false. Как проверить, существует ли файл или нет w.r.t в определенном месте в корневом каталоге веб-проекта?

Edit: Путь к файлу отображается в /pas/static/Downloadables/20/Home_insurance_booklet.pdf

+0

если вы печатаете Filepath что вы получите? – jamp

+0

@jamp Я получаю: /pas/static/Downloadables/20/Home_insurance_booklet.pdf – Anveshan

+0

Я предполагаю, что этот путь фактически не существует, не так ли? в виду, что он начинается с /, таким образом, это абсолютный путь ... возможно, вы хотите проверить pas/static/Downloadables/20/Home_insurance_booklet.pdf – jamp

ответ

2

Попробуйте следующее:

String path = getServletContext().getRealPath("/static/Downloadables/20/Home_insurance_booklet.pdf") 
File file = new File(path) 
if (file.exists()) { 
    // Success 
} 

А вот это API-Doc из getRealPath(): http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

+0

Спасибо Stefan .. он работает правильно .. Я буду проходить через Docs .. – Anveshan

0

Вы должны использовать URL на основе файловой системы, а не относительный URL на основе веб.

0

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

1

Использование

ServletContext context = request.getServletContext(); 
StringBuilder finalPathToFile = new StringBuilder(context.getRealPath("/")); 

ServletContext # getRealPath() преобразует Интернет путь к контенту (путь в расширенной структуре папок WAR на сервисе r файловой системы диска) до абсолютного пути файловой системы диска.

"/" представляет корень веб-контента.

После этого Append таким образом:

finalPathToFile.append("/static/Downloadables/20/Home_insurance_booklet.pdf"); 

Затем используйте

if(new File(finalPathToFile.toString()).exists()) { 
--------------------- 
doWhateverYouWantToDo 
--------------------- 
}