Use a classe PropertyResourceBundle. O construtor dela recebe um InputStream, o qual deve estar atrelado ao seu arquivo “.properties”.
Daí vc pode utilizar o método getKeys() que te retorna um Enumeration e também o getString(String key) para recuperar os valores das entradas do properties
public class PropertiesLoaderImpl {
private static PropertiesLoader loader = new PropertiesLoader();
public static String getValor(String chave){
return (String)loader.getValor(chave);
}
}
Para ler uma variavel que está dentro do SEU ARQUIVO.properties:
public class PropertiesLoaderImpl {
private static PropertiesLoader loader = new PropertiesLoader();
public static String getValor(String chave){
return (String)loader.getValor(chave);
}
}
Para ler uma variavel que está dentro do SEU ARQUIVO.properties:
Akumaldo,
Acho que a abordagem do marceloplis impede isso…
Uma solução mais trivial, sem envolver a criação de uma classe para fazer o carregamento das variáveis do arquivo properties, poderia ser assim:
/*Leitura do arquivo properties*/
FileInputStream fis = new FileInputStream(yourPropertiesFile);
Properties props = new Properties();
try{
props.load(fis);
fis.close();
}catch(IOException e){
e.printStackTrace();
}
/*Leitura das variáveis no Properties props*/
for(Enumeration elms = props.propertyNames(); elms.hasMoreElements;){
String prop = (String)elms.nextElement();
syso(prop + ": " + props.getProperty(prop));
syso(elms.hasMoreElements() ? "\n" : "");
}
[quote=Mantu]Akumaldo,
Acho que a abordagem do marceloplis impede isso…
Uma solução mais trivial, sem envolver a criação de uma classe para fazer o carregamento das variáveis do arquivo properties, poderia ser assim:
/*Leitura do arquivo properties*/
FileInputStream fis = new FileInputStream(yourPropertiesFile);
Properties props = new Properties();
try{
props.load(fis);
fis.close();
}catch(IOException e){
e.printStackTrace();
}
/*Leitura das variáveis no Properties props*/
for(Enumeration elms = props.propertyNames(); elms.hasMoreElements;){
String prop = (String)elms.nextElement();
syso(prop + ": " + props.getProperty(prop));
syso(elms.hasMoreElements() ? "\n" : "");
}
Espero ter ajudado. Qq coisa, poste mais, ok?[/quote]
não entendi como ele faz a leitura das variáveis…podia explicar melhor?? :oops:
Diferentemente do Windows (onde existem as APIs “GetPrivateProfileString” e “SetPrivateProfileString”), no Java um arquivo “properties” deve ser lido de uma vez só (com “load”) e carregado na memória como um objeto do tipo Properties, e escrito de uma vez só (com “store”).
(O Windows também faz isso, mas esconde o fato de você).
O tipo Properties funciona como se fosse uma tabela onde você passa a chave e obtém um valor, usando o método “getProperty”.
Pessoal desculpe ressuscitar esse tópico antigo, mas procurei algo e não achei nada…
A minhha dúvida é parecida, mas com uma diferença, eu quero ler o properties fora do jar.
No projeto como esta funciona bem só que o meu configuration.properties esta dentro do jar, na raiz do projeto.
Agora tenho a necessidade de deixar o .properties fora para que possa mudar as configurações sem ter que abrir o jar.
Com o .properties dentro e na raiz do jar, eu leio assim: