[RESOLVIDO] método File.createNewFile() grava arquivo na pasta raiz do tomcat

2 respostas
B

Boa tarde.
Usando o apache tomcat 7.0.28, quando executo o método crateNewFile(), onde o path do arquivo é relativo contendo o nome da pasta e o nome do arquivo,
a pasta é criada na raiz do tomcat. Porém quando quero buscar esse arquivo, ele busca na pasta WAR do projeto.

A dúvida é, como eu faço para fazer com que o servlet grave na pasta WAR.

–RESOLUÇÃO

  • O Caminho usado deve ser absoluto, e não relativo, então basta gravar o arquivo usando o seguinte método
    getServletContext().getRealPath();

2 Respostas

E

Não é necessário usar createNewFile para criar um novo arquivo. O nome da classe (java.io.File) leva a interpretações incorretas. Use um PrintWriter, um FileWriter ou um FileOutputStream, dependendo do que você quer fazer.

B

Amigo, eu usava esse método para criar um arquivo vazio, e na sequência eu jogava os bytes no stream desse arquivo.
O meu problema era que quando rodava local e mandava gravar, ele grava normalmente na pasta WAR, porém quando ia para o servidor, ele gravava na pasta raiz do TOMCAT 7.0.

Na realidade, o problema é que eu usava um path relativo para gravar o arquivo físico, enquanto na realidade eu deveria usar um path absoluto.

A resposta para meu problema era pegar o path absoluto do servidor, então eu resolvi essa questão alterando o caminho de gravação do arquivo para o retorno do seguinte método:

getServletContext().getRealPath(File.separator);

Criado 17 de dezembro de 2012
Ultima resposta 19 de dez. de 2012
Respostas 2
Participantes 2