Path com o TomCat

Galera, estou com um pequeno problema…

Tenho que fazer um trabalho para a faculdade onde tenho que ler um arquivo .txt e jogar para uma página JSP, consegui fazer na boa, desde que eu fixe o caminho do arquivo .txt… eu queria fazer algo mais dinâmico…

Estava dando uma olhada, se eu declarar um:

File teste = new File("teste.txt"); System.out.prinln(teste.absolutePath());

Ele printa no log o seguinte:
C:\WINDOWS\SYSTEM32\TESTE.TXT

Claro que o arquivo não existe… como eu faço para ele seguir a estrutura do meu contexto no Tomcat ?!

Por exemplo, eu criei a seguinte estrutura:

C:\VendasInternas
    data
    images
    jsp
    WEB-INF
        classes
        src
        tlds

Eu quero colocar meus arquivos texto que irei ler em DATA e ele pegar direto de lá… não quero fixar C:\VENDASINTERNAS\DATA pq o professor pode colocar debaixo do WEBAPPS para testar… ou seja, tem que pegar do DATA independente de onde esteja meu contexto… tem como eu fazer isso ?!

Alguém pode me dar um help esperto nessa questão ?!

Se você quer ler um arquivo, use getClass().getResourceAsStream(). Ele seguirá as mesmas regras que o Tomcat usa para procurar uma classe. Ou seja, ele vai procurar, por exemplo, em WEB-INF/classes.

Por exemplo:

InputStream is = getClass().getResourceAsStream("/data/teste.txt");
BufferedReader br = new BufferedReader (new InputStreamReader (is));
String line = br.readLine();
br.close();

e ponha o arquivo em WEB-INF/classes/data/teste.txt.

Agora você me pergunta, não posso pôr o arquivo onde eu quero? Por exemplo, não posso usar “…/…/data/teste.txt”, já que eu sei que ele vai procurar em WEB-INF/classes? A resposta é não, você não pode fazer isso.