Esses dias tive que manipular um arquivo .properties e não tinha muita noção de como o fazer, então fui dando uma fuçada aqui e ali e achei na API tudo que eu precisava e fiz o que eu queria.
Bom para efeitos didáticos e de salvamento, se alguém tiver no sufoco e tiver que fazer isso também, ta aí a classezinha que quebra o galho (na verdade não é a versão final do que eu fiz, mas daqui eu parti para o que eu precisava).
Primriro criei um arquivo de propriedades para testes. Arquivos de propriedades são aquivos contendo texto em que a cada linha se tem um par de chave e valor.
configuracoes.properties:
sistema=xyz
versao=0.0.1
plataforma=MS Windows
sgbd=MySQL
autor=Jean Jorge Michel
Agora eu queria algumas funcionalidades na minha classe (já que eu ia fazer um cara que pelo menos lesse o arquivo, eu já faria alterar e salvar também):
- public java.util.Properties carregarPropriedades(java.lang.String origem);
- public void imprimir(java.util.Map propriedades);
- public java.lang.String getPropriedade(java.util.Properties propriedades, java.lang.String propriedade);
- public java.util.Properties incluirPropriedade(java.lang.String chave, java.lang.String valor, java.util.Properties propriedades);
- public java.util.Properties removerPropriedade(java.lang.String chave, java.util.Properties propriedades);
- public void salvar(java.util.Map propriedades, java.lang.String destino).
Esses são os métodos que eu tenho na minha classe. Agora lá vem ela:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
/**
* @author Jean Jorge Michel
* @version 1.0
*/
public class ManipuladorProperties {
/**
* Método que retorna um objeto Properties com as informações do sistema.
* @param arquivo O Caminho físico do arquivo e seu nome.
* @return Um objeto Properties.
*/
public Properties carregarPropriedades(String origem) {
FileInputStream arquivoConfig = null;
Properties configSistema = new Properties();
try {
arquivoConfig = new FileInputStream(origem);
configSistema.load(arquivoConfig);
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
finally {
try {
arquivoConfig.close();
}
catch(IOException e) {
e.printStackTrace();
}
}
return configSistema;
}
/**
* Método que imprime no console todas as propriedades e seus respectivos
* valores encontradas no arquivo de propriedades.
* @param propriedades Um objeto do tipo Properties.
*/
public void imprimir(Map propriedades) {
Set<String> valores = propriedades.keySet();
for(String valor: valores) {
System.out.println(valor + "=" + propriedades.get(valor));
}
}
/**
* Método que retorna o valor de uma propriedade de acordo com o seu nome.
* @param propriedades Um objeto do tipo Properties.
* @param propriedade Nome da propriedade.
* @return O valor da propriedade.
*/
public String getPropriedade(Properties propriedades, String propriedade) {
return propriedades.getProperty(propriedade);
}
/**
* Método que adiciona ao objeto Properties mais uma propriedade.
* @param chave O nome da nova propriedade a incluir.
* @param valor O valor da nova propriedade
* @param propriedades O objeto Properties a ser modificado.
* @return Retorna o objeto Properties modificado.
*/
public Properties incluirPropriedade(String chave,
String valor,
Properties propriedades) {
propriedades.put(chave, valor);
return propriedades;
}
/**
* Método que remove do objeto Properties uma propriedade.
* @param chave A propriedade a ser removida
* @param propriedades O objeto Properties a ser modificado.
* @return Retorna o objeto Properties modificado.
*/
public Properties removerPropriedade(String chave, Properties propriedades) {
propriedades.remove(chave);
return propriedades;
}
/**
* Método que persiste no disco o arquivo properties.
* @param propriedades O objeto Properties a ser gravado.
* @param destino O caminho físico e o nome do arquivo a ser criado.
*/
public void salvar(Map propriedades, String destino) {
FileWriter fw = null;
try {
fw = new FileWriter(destino);
Set<String> valores = propriedades.keySet();
for(String valor: valores) {
fw.write(valor + "=" + propriedades.get(valor) + "\r\n");
}
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
finally {
try {
if (fw != null) {
fw.close();
}
}
catch(IOException e) {
e.printStackTrace();
}
}
}
}
Para testar:
String caminho = "C://temp//";
String arquivo = "configuracoes.properties";
ManipuladorProperties mp = new ManipuladorProperties();
Properties configSistema = mp.carregarPropriedades(caminho + arquivo);
//Lista as propriedades
mp.imprimir(configSistema);
//Recupera uma propriedade específica
System.out.println(mp.getPropriedade(configSistema, "autor"));
//Inclui uma propriedade nova
mp.incluirPropriedade("data", new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date()), configSistema);
//Grava o arquivo, neste caso com outro nome
mp.salvar(configSistema, caminho + "novas_propriedades.properties");
É isso aí, esta feito quem quiser usar pode usar, sem nenhuma garantia claro. :)
Gostou, quer criticar, sugerir algo... comente aí o post!
Mostrando postagens com marcador properties. Mostrar todas as postagens
Mostrando postagens com marcador properties. Mostrar todas as postagens
terça-feira, maio 15, 2007
Trabalhando com arquivos .properties
Marcadores:
file,
filewriter,
IO,
java,
properties
Assinar:
Postagens (Atom)