Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Caminhos relativos em uma aplicação

Fiz um Servlet que responde a uma requisição GET e me retorna um arquivo pelo navegador. Segue trecho do código.

protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Scanner sc = new Scanner(new File("C:\\Users\\fulano-dos-treco\\eclipse-workspace-EE\\faceGit\\arquivos\\svg_EDITADO_e_ANIMADO.svg"));
        PrintWriter pw = response.getWriter();

        response.setHeader("content-type", "image/svg+xml; charset=utf-8");

        System.out.println("Imagem entregue para o usuario");
        while (sc.hasNextLine()) {
            pw.println(sc.nextLine());
        }
        sc.close();
        pw.close();
    }

Minha duvida é. No momento de definir o File() eu sou abrigado a colocar o caminho completo do arquivo "C:\Users\fulano-dos-treco\eclipse-workspace-EE\faceGit\arquivos\svg_EDITADO_e_ANIMADO.svg", quando coloco o caminho relativo "arquivos\svg_EDITADO_e_ANIMADO.svg" o programa não encontra o arquivo. Como posso resolver isso?

OBS: isso só acontece com os projetos que estão rodando dentro do servidor web.

2 respostas

Olá Mayki

No Mac/Linux costuma-se também usara "./arquivos\svg_EDITADO_e_ANIMADO.svg"

Mas uma saída, se o Java precisa de um path completo, é usar alguma variável do sistema que retorna o Path(diretório) do arquivo que está sendo rodado.

Não entendo de Java, mas esta página pode te dar alguma indicação da solução https://stackoverflow.com/questions/6893497/java-file-path-in-web-project

solução!

consegui fazer funcionar da seguinte forma:

String caminho = this.getClass().getResource("../../../../").getPath();
File svgFinal = new File(caminho + "svg_EDITADO_e_ANIMADO.svg");

desta forma consegui apontar para os arquivos compilados que ficam em execuxão dentro do servidor tomcat.

Ao usar o "this.getClass().getResource()" recebo o caminho para o arquivo compilado que segue essa estrutura.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Subi alguns níveis até encontar onde os arquivos que eu queria estavam e e usei esse caminho como base para encontrar os demais.

Referencias: