Properties

5 respostas
A

E ai Pesoal,

tenho uma classe que não é um servlet e quero lê o arquivo properties.

quero saber como pego o caminho do arquivo até a raiz…

muito grato,

5 Respostas

Rafael_Steil

Como assim, “o caminho ate a raiz”? voce diz, o caminho completo do arquivo? ou o caminho completo ate o arquivo?

Para pegar o caminho completo no qual voce se encontra, pode tentar com

String path = new File(".").getAbsolutePath();

Se tiver alguma instancia do Servlet, pode tentar

getServletContext().getRealPath(".")

Rafael

A

Olá Rafael,

O problema é o seguinte…,tenho uma classe de conexão com o banco e quero livrar o sql do codigo. quero colocar esse arquivo de properties dentro da pasta WEB-INF e chamar assim

Properties queries=new Properties();
queries.load(new FileInputStream(“WEB-INF/config.properties”));

mas ele não está achando…, só quando coloco o caminho todo até o arquivo.

se essa classe de conexão fosse um servlet eu conseguiria pegar com o …RealPath.

Qual a solução vc me aconselha???

muito grato,

Rafael_Steil

Olha, o que eu faco eh o seguinte: tenho uma classe de utilidades gerais, com metodos estaticos, a qual guarda os dados de um arquivo de configuracao, e outros dados que precisar. Inicio essa classe quando o servlet sobe pela primeira vez, ou seja, coloco o codigo no metodo init(ServletConfig) da classe HttpServlet.
Fica algo como

No teu servlet:

...
public void init(ServletConfig config) throws ServletException
{
    // ...
    // Pega o caminho completo da aplicacao 
    SystemGlobals.setApplicationPath(config.getServletContext().getRealPath("") +"/");
    // ... outras inicializacoes, etc..
}
...

“SystemGlobals” basicamente eh algo como

public class SystemGlobals 
{
	private static HashMap map = new HashMap();

	private SystemGlobals() { }

	public static void setValue(String field, Object value)
	{
		map.put(field, value);
	}

	public static Object getValue(String field)
	{
		return map.get(field);
	}

	public static void setApplicationPath(String ap)
	{
		setValue("Application.PATH", ap);
	}

	public static String getApplicationPath()
	{
		return (String)getValue("Application.PATH");
	}

	// ...
}

Ha outros metodos para carregar as configuracoes de algum arquivo e coisas assim, mas a ideia geral eh essa.
Entao, quando voce quiser alguma dessas configuracoes, como o caminho completo da tua aplicacao, eh soh fazer

TuaClasse.java

...
String queries = SystemGlobals.getApplicationPath() + "WEB-INF/queries.sql";
...

Ou algo do genero.

Rafael

cv1

Putz, q complicacao, Rafael! :smiley:

Basta fazer isso aqui:

this.getClass().getClassLoader().getResourceAsStream("arquivo.properties");

Pegar o InputStream e mandar pro construtor dum objeto Properties! O arquivo tem que estar no CLASSPATH da sua aplicação - por exemplo, em WEB-INF/classes/ - e vai ser encontrado numa boa, mesmo estando dentro de um War ou Jar.

Rafael_Steil

Ta, mas e se eu quiesse colocar todos os meus arquivos de configuracao em WEB-INF/config ?

Rafael

Criado 12 de outubro de 2003
Ultima resposta 12 de out. de 2003
Respostas 5
Participantes 3