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