2012-01-23 4 views
0

У меня есть файл csv, прикрепленный к моему проекту на Eclipse, и этот проект имеет сервлет, который развернут на локальном сервере JBoss для разработки.Путь к файлу на моем сервере JBoss из сервлета

Я хочу, чтобы открыть файл CSV, и я могу с помощью абсолютного пути на моем компьютере, например:

CSVExtractor csvE = new CSVExtractor("C:/workspace/myproject/WebContent/data.csv"); 

Проблемы с этим подходом является тхом это не переносимо любыми способами. Я считаю, что JBoss предоставил мне метод, чтобы я мог получить доступ к файлам внутри моего проекта, но я его не нашел. Какой будет предпочтительный метод?

PS: Я также считаю, что плохая практика заключается в том, чтобы поместить такой файл в мою папку WebContent, что лучший способ изолировать этот материал от пользователя?

ответ

0

Добавьте его в свой путь к классам (WEB-INF/classes или lib) и получите доступ к нему как к ресурсу пути к классам. Вот example. Ресурсы Classpath переносимы в отличие от того, как они связаны с самим архивом развертывания.

Это tutorial, для которого вы начнете.

+0

Когда вы говорите "добавить его в/WEB-INF/Lib" вы имеете в виду просто положить data.csv в этой папке? Я сделал это, но я не могу понять, каков путь прямо сейчас. Это /myproject/WEB-INF/lib/data.csv? Я что-то упускаю? –

+0

@ThiagoMoraes перемещает его в классы. Прочтите учебник, добавленный мной –

0

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

0

попробовать это:

String path = Thread.currentThread().getContextClassLoader().getResource("language/file.xml").getPath(); 

    File f = new File(path); 

    System.out.println(f.getAbsolutePath()); 
Смежные вопросы