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,
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,
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
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,
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
Putz, q complicacao, Rafael! 
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.
Ta, mas e se eu quiesse colocar todos os meus arquivos de configuracao em WEB-INF/config ?
Rafael