Leitor de Arquivo de Propriedades (Chave/Valor) em Java
Atualizado em:
Pequena classe que realiza a leitura de um arquivo com propriedades, no formato [chave]=[valor].
Baseado no Properties do Java, só que mais enxuto, com função apenas de leitura, a vantagem em relação ao Properties é sua simplicidade, ideal para sistemas de alto desempenho.
O arquivo é lido apenas no construtor, evitando acesso ao disco, o leitor ignora linhas iniciadas com # e com a [chave] nula
Classe LeitorArquivo.java
package leitorarquivo;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
/**
* Classe resposnsável por realizar a leitura dos arquivos de propriedades
* No construtor da classe deve ser passado o caminho do arquivo a ser lido
* O arquivo é lido apenas no construtor, evitando acesso ao disco, salvo se o método lerArquivo() for chamado novamente
* O arquivo de configuração deve estar neste formato: [chave]=[valor]
* O leitor ignora linhas iniciadas com # e com a [chave] nula
* @author Paulo Collares
*/
public class LeitorArquivo {
private Map map = new HashMap();
private String arquivo;
/**
* No construtor da classe deve ser passado o caminho do arquivo a ser lido
* O arquivo é lido apenas no construtor, evitando acesso ao disco, salvo se o método lerArquivo() for chamado novamente
* @param arquivo
*/
public LeitorArquivo(String arquivo) {
lerArquivo(arquivo);
}
/**
* Força a releitura do arquivo
*/
public void lerArquivo() {
leituraArquivo();
}
/**
* Força a releitura do arquivo, passando como parâmetro um novo arquivo
* @param arquivo
*/
public void lerArquivo(String arquivo){
this.arquivo=arquivo;
leituraArquivo();
}
/**
* Método que realiza a leitura do arquivo, verifica as linhas e salva na lista
*/
private void leituraArquivo(){
try {
FileReader fileReader = new FileReader(arquivo);
BufferedReader leitor = new BufferedReader(fileReader);
String linha=null;
while (leitor.ready()) {
linha = leitor.readLine();
if (!linha.contains("="))
break;
if (linha.charAt(0)=='#' || linha.charAt(0)=='=')
break;
String temp[] = linha.split("=");
map.put(formataChave(temp[0]), temp[1]);
}
fileReader.close();
leitor.close();
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
/**
* Formata a chave para minúsculo e sem espaços
*/
private String formataChave(String chave){
chave=chave.toLowerCase();
chave=chave.replaceAll(" ", "");
return chave;
}
/**
* Recupera um valor, passando a chave como parâmetro
* @param chave
* @return valor
*/
public String get(String chave) {
return (String) map.get(formataChave(chave));
}
/**
* Recupera um valor, passando a chave como parâmetro
* Retorna um valor padrão caso a chave não seja encontrada
* @param chave
* @param valor padrão
* @return valor
*/
public String get(String chave, String padrao){
String r = get(chave);
if (r==null)
r=padrao;
return r;
}
/*
* Recupera a lista completa
*/
public Map getList(){
return map;
}
}
Exemplo de Utilização
Considerando um pequeno arquivo de leitura:
#teste.txt caminho=/etc/hosts usuario=admin senha=1234 titulo=Ola Mundo
Podemos ler a chave título, por exemplo, deste modo:
LeitorArquivo leitorArquivo = new LeitorArquivo("/home/pcollares/teste.txt");
System.out.println(leitorArquivo.get("titulo"));
Espero que seja útil, deixe sua opinião nos comentários, obrigado!

Deixe um comentário