Na minha aplicação com struts e hibernate, num dado momento vou precisar gravar uma imagem na pasta WebContent/imagens, não posso usar o caminho absoluto, por isso preciso do relativo, como pego o caminho relativo dessa pasta?
Eu quero gravar o arquivo sem tem que fazer como está no codigo. Quero gravar em …/imagens.
Você precisa saber o diretório físico onde está a pasta WebContent/imagens? Tente obter a URL de “WebContent/imagens” e depois use getPath(). Alguma coisa você vai obter. Veja o programa abaixo.
import java.net.*;
/**
* Para rodar este programa,
* mkdir WEB-INF\resources
* javac TesteURLFile.java
* java -cp .;WEB-INF TesteURLFile
*
* Ele deve mostrar algo como:
* /C:/diretorio/WEB-INF/resources (em uma mßquina Windows)
* //diretorio/WEB-INF/resources (em uma mßquina Linux)
* Para vocΩ usar isso, tire o primeiro "/" para ter o nome do diret≤rio.
*
*/
class TesteURLFile {
public void teste() {
URL urlArquivo = getClass().getClassLoader().getResource("resources");
System.out.println (urlArquivo.getPath());
System.out.println (urlArquivo.getPath());
}
public static void main(String[] args) throws Exception {
TesteURLFile t = new TesteURLFile();
t.teste();
}
}
class TesteURLFile {
public void teste() {
URL urlArquivo = getClass().getClassLoader().getResource("resources");
System.out.println (urlArquivo.getPath());
// Nesse caso, retorna o caminho "até" o diretório web da aplicação (considerando que o dir web chama-se WebContent)
String webDir = "WebContent/";
String webDirPath = url.substring(0, url.indexOf(webDir)+webDir.length());
System.out.println(webDirPath);
}
}