"Hoje estamos explorando outro tópico novo e interessante: propriedades. "

"Em Java, costuma-se tornar os programas flexíveis e facilmente personalizáveis, ou seja, facilmente configuráveis."

"Por exemplo, uma vez por hora, seu programa copia arquivos de um determinado diretório, compacta-os e os envia para você por e-mail. Para fazer isso, o programa precisa saber o diretório de onde os arquivos serão retirados e o endereço de e-mail para onde devem ser enviados. Esses dados geralmente não são armazenados no código do aplicativo, mas em arquivos de propriedades separados ."

Os dados neste arquivo são armazenados como pares chave-valor, separados por um sinal de igual.

Exemplo
data.properties file
directory = c:/text/downloads
email = zapp@codegym.cc

"À esquerda do sinal está o nome (chave), à ​​direita está o valor."

"Então este é um tipo de representação textual de um HashMap?"

"Em geral, sim."

"Para conveniência ao trabalhar com esses arquivos, Java tem uma classe especial de Propriedades. A classe Propriedades herda Hashtable<Object,Object>. Pode até ser considerado como um Hashtable que pode carregar a si mesmo de um arquivo."

"Aqui estão seus métodos:"

Método Descrição
void load(Reader reader) Carrega as propriedades do arquivo representado por um objeto Reader
void load(InputStream inStream) Carrega as propriedades do arquivo representado por um objeto InputStream
void loadFromXML(InputStream in) Carregar propriedades de um arquivo XML
Object get(Object key) Retorna o valor para a chave especificada. Este método é herdado de Hashtable
String getProperty(String key) Retorna um valor de propriedade (string) por chave.
String getProperty(String key, String defaultValue) Retorna um valor de propriedade por chave ou defaultValue se não houver tal chave.
Set<String> stringPropertyNames() Retorna uma lista de todas as chaves

"Em outras palavras, você realmente precisa executar apenas duas operações - carregar dados de algum arquivo em um objeto Propriedades e obter essas propriedades usando o método getProperty (). Bem, e não se esqueça de que você pode usar o objeto Propriedades como um HashMap ."

"Aqui está outro exemplo:"

Código
// The file that stores our project's properties
File file = new File("c:/data.properties");

// Create a Properties object and load data from the file into it.
Properties properties = new Properties();
properties.load(new FileReader(file));

// Get property values from the Properties object
String email = properties.getProperty("email");
String directory = properties.getProperty("directory");

// Get a numeric value from the Properties object
int maxFileSize = Integer.parseInt(properties.getProperty("max.size", "10000"));

"Ah. Então, criamos um objeto Properties e, em seguida, passamos um arquivo para ele. Para o método load. E então apenas chamamos getProperty. Certo?"

"Sim."

"E você também disse que pode ser usado como um HashMap? O que você quis dizer?"

"A classe Properties herda o Hashtable, que é igual ao HashMap, mas todos os seus métodos são sincronizados. Você pode simplesmente exibir todos os valores do arquivo de propriedades na tela assim:"

Código
// Get the file with the properties
File file = new File("c:/data.properties");

// Create a Properties object and load data from the file into it.
Properties properties = new Properties();
properties.load(new FileReader(file));

// Run through all the keys and display their values on the console
for (String key : properties.stringPropertyNames())
{
 System.out.println(properties.get(key));
}

"Ah. Tudo parece ter se encaixado. Obrigado, Rishi. Vou usar essa coisa legal."