Tenho uma servlet que abre um arquivo e gostaria de deixar o path relativo. Atualmente eu abro o arquivo assim: nomeDaAplicação/pasta/arquivo.txt.
Gostaria de saber se tem como tirar o “nomeDaAplicação” deixar o path desta maneira, “pasta/arquivo.txt” ? Porque se algum dia mudar o nome da aplicação terá que mudar o código.
Servlet, problema com Paths
7 Respostas
Você poderia deixar o nome e caminho do arquivo dinâmicos, ou seja, colocar eles eu um xml ou properties, essa seria a melhor opção na minha opnião.
Para ler sem colocar o o nome da aplicação tente /pasta/arquivo.txt e coloque a pasta dentro da pasta WEB-INF, se não me engano já fiz algo parecido.
A pasta que eu quero acessar já está dentro de WEB-INF e já tentei colocar desta maneira também, “pasta/arquivo” e não rodou.
O arquivo de configuração já existe e estou querendo mudar esta parte, acho que isso ficaria melhor no código direto, sem precisar mudar…
Tenta
request.getContextPath()+"/pasta/seuArquivo.txt";
Ele retorna o contexto de sua aplicação, nesse caso fica independente, se mudar o nome da aplicação não terá problemas … :thumbup:
[]'s
Desculpa galera, esqueci de informar que a servlet chama outro objeto, que é este quem vai abrir o arquivo, então, não tem como eu usar este método dentro da outra classe, porque ela não é um Servlet.
pasta/arquivo.txt não funcionou, mas você tentou com “/” na frente: “/pasta/arquivo.txt” ?
Caso não funcione, uma alternativa seria colocar o nome da aplicação nos parâmetros de inicialização da aplicação e depois recuperá-lo assim :
getServletConfig().getInitParameter("nomeaplicacao");
Claro, depende de qual framework você está utilizando.
É só passar um argumento a mais para esta outra classe, com o nome da aplicação.
Não tem como vc pegar o arquivo da sua Servlet e passar um objeto File para o método da outra classe ???
[]'s