"Hoy estamos explorando otro tema nuevo e interesante: las propiedades " .

“En Java, es costumbre hacer que los programas sean flexibles y fácilmente personalizables, es decir, fácilmente configurables”.

"Por ejemplo, una vez por hora, su programa copia archivos de un determinado directorio, los comprime y se los envía por correo electrónico. Para hacer esto, el programa necesita saber el directorio de donde se tomarán los archivos y la dirección de correo electrónico. donde deben ser enviados Tales datos generalmente no se almacenan en el código de la aplicación, sino en archivos de propiedades separados ".

Los datos de este archivo se almacenan como pares clave-valor, separados por un signo igual.

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

"A la izquierda del signo está el nombre (clave), a la derecha está el valor".

"¿Así que esto es una especie de representación textual de un HashMap?"

"En general, sí".

"Para facilitar el trabajo con este tipo de archivos, Java tiene una clase de propiedades especial. La clase de propiedades hereda Hashtable<Object,Object>. Incluso se puede considerar como una Hashtable que puede cargarse a sí misma desde un archivo".

"Aquí están sus métodos:"

Método Descripción
void load(Reader reader) Carga propiedades del archivo representado por un objeto Reader
void load(InputStream inStream) Carga propiedades del archivo representado por un objeto InputStream
void loadFromXML(InputStream in) Cargar propiedades desde un archivo XML
Object get(Object key) Devuelve el valor de la clave especificada. Este método se hereda de Hashtable
String getProperty(String key) Devuelve un valor de propiedad (cadena) por clave.
String getProperty(String key, String defaultValue) Devuelve un valor de propiedad por clave o valor predeterminado si no existe tal clave.
Set<String> stringPropertyNames() Devuelve una lista de todas las claves.

"En otras palabras, en realidad necesita realizar solo dos operaciones: cargar datos de algún archivo en un objeto de propiedades y luego obtener estas propiedades usando el método getProperty (). Bueno, y no olvide que puede usar el objeto de propiedades como un HashMap ".

"Aquí hay otro ejemplo:"

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. Así que creamos un objeto Propiedades, y luego le pasamos un archivo. Al método de carga. Y luego simplemente llamamos a getProperty. ¿Verdad?"

"Sí."

"¿Y también dijiste que se puede usar como HashMap? ¿Qué quisiste decir?"

"La clase de propiedades hereda Hashtable, que es lo mismo que HashMap, pero todos sus métodos están sincronizados. Simplemente puede mostrar todos los valores del archivo de propiedades en la pantalla de esta manera:"

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. Todo parece haber encajado en su lugar. Gracias, Rishi. Voy a usar esta cosa genial".