Caminho relativo para gravar arquivo

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.

Valeu!

[code]
Blob imgBlob = element.getImgCategoryBlob();
byte[] imgBytes = imgBlob.getBytes(1, (int)imgBlob.length());
System.out.println("imgBytes: " + imgBytes.length);

File img = new File(“c:\teste.png”);

try {
FileOutputStream fo = new FileOutputStream(img);
fo.write(imgBytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}[/code]

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();
    }
}

O que eu fiz de errado?


URL urlArquivo = this.getClass().getClassLoader().getResource("WebContent/imagens");
        System.out.println(urlArquivo.getPath());

exception 

javax.servlet.ServletException
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)

Bom, se alguém mais precisar da fóruma do bolo…

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);
    }
}