Obter um caminho de um arquivo em uma aplicação web

5 respostas
C

tudo bom pessoal?
estou tentando pegar o caminho do meu arquivo, já tentei usar vários métodos, mais nenhum deles resolveu.

gostaria de ter um caminho assim:
C:\Users\User\workspace\teste\src\br\com\teste\relatorios

pra que ele funcione na minha maquina e depois quando eu enviar para o servidor.

os arquivos estão em um package

ja tentei:

String caminho = System.getProperty("user.dir");
String caminho = new File("").getAbsolutePath();
String caminho = new File("").getCanonicalPath();

mas todos me retornam: C:\Program Files\eclipse

String caminho = new File("/").getAbsolutePath();
String caminho = new File("/").getCanonicalPath();

retorna: C:\

String caminho = new File("src/arquivo.txt").getCanonicalPath();

retorna: C:\Program Files\eclipse\src\arquivo.txt

5 Respostas

A

Tenta assim.

FacesContext.getCurrentInstance().getExternalContext().getRealPath("/");
E

Cara, desculpa não explicar direito, mas dá uma olhada na documentação, eu sempre uso isso.

getServletContext( ).getRealPath(“nome do seu arquivo”)

Tenta lá!

C

tentei usar o

String path = req.getSession().getServletContext().getRealPath("/WEB-INF/classes/br/com/teste/relatorios");

e ele me traz: C:\Users\Rick\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\teste\WEB-INF\classes\br\com\teste\relatorios

e os arquivos realmente estão lá!!!
mas esse realmente é o caminho certo??? ou é pq eu ainda estou rodando em minha maquina???

A

Põe o syout com o valor, ou se estiver usando log4j, põe no log esse valor.

Gera o War e publica no servidor sem o auxilio do IDE.

Depois ve o log do servidor, ou o log do log4j.

D

carlos_chea:
tentei usar o

String path = req.getSession().getServletContext().getRealPath("/WEB-INF/classes/br/com/teste/relatorios");

e ele me traz: C:\Users\Rick\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\teste\WEB-INF\classes\br\com\teste\relatorios

e os arquivos realmente estão lá!!!
mas esse realmente é o caminho certo??? ou é pq eu ainda estou rodando em minha maquina???


A forma adequada de obter o caminho do que você precisa é utilizando o método getRealPath(String) do objeto de ServletContext.
O caminho retornado, no teu caso, se deve ao fato de que você está usando o Eclipse e o Apache Tomcat.
Isso faz com que o Tomcat gerencie os projetos como plugin do Eclipse, logo, eles serão “acomodados” na estrutura de diretórios .metadata.plugins\org.eclipse.wst.server.core<tmp>\wtpwebapps<projeto><caminho>
Onde:
indica onde o workspace está
pasta temporária, pode ter mais de uma
nome do projeto
caminho para o arquivo

Criado 2 de outubro de 2012
Ultima resposta 3 de out. de 2012
Respostas 5
Participantes 4