"Oggi esploriamo un altro argomento nuovo e interessante: le proprietà " .
"In Java, è consuetudine rendere i programmi flessibili e facilmente personalizzabili, cioè facilmente configurabili."
"Ad esempio, una volta all'ora il tuo programma copia i file da una determinata directory, li comprime e te li invia tramite e-mail. Per fare ciò, il programma deve conoscere la directory da cui verranno presi i file e l'indirizzo e-mail dove dovrebbero essere inviati. Tali dati sono solitamente memorizzati non nel codice dell'applicazione, ma in un file di proprietà separato ."
I dati in questo file vengono archiviati come coppie chiave-valore, separate da un segno di uguale.
data.properties file
directory = c:/text/downloads
email = zapp@codegym.cc
"A sinistra del segno c'è il nome (chiave), a destra c'è il valore."
"Quindi questa è una specie di rappresentazione testuale di una HashMap?"
"In generale, sì."
"Per comodità nel lavorare con tali file, Java ha una speciale classe Properties. La classe Properties eredita Hashtable<Object,Object>. Può anche essere considerata come una Hashtable che può caricarsi da sola da un file."
"Ecco i suoi metodi:"
Metodo | Descrizione |
---|---|
void load(Reader reader) |
Carica le proprietà dal file rappresentato da un oggetto Reader |
void load(InputStream inStream) |
Carica le proprietà dal file rappresentato da un oggetto InputStream |
void loadFromXML(InputStream in) |
Carica le proprietà da un file XML |
Object get(Object key) |
Restituisce il valore per la chiave specificata. Questo metodo è ereditato da Hashtable |
String getProperty(String key) |
Restituisce un valore di proprietà (stringa) per chiave. |
String getProperty(String key, String defaultValue) |
Restituisce un valore di proprietà per chiave o defaultValue se non esiste tale chiave. |
Set<String> stringPropertyNames() |
Restituisce un elenco di tutte le chiavi |
"In altre parole, in realtà devi eseguire solo due operazioni: caricare i dati da un file in un oggetto Properties e quindi ottenere queste proprietà usando il metodo getProperty (). Bene, e non dimenticare che puoi usare l' oggetto Properties come una mappa hash ."
"Ecco un altro esempio:"
// 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. Quindi creiamo un oggetto Properties, e poi gli passiamo un file. Al metodo load. E poi chiamiamo semplicemente getProperty. Giusto?"
"Sì."
"E hai anche detto che può essere usato come HashMap? Cosa intendevi?"
"La classe Properties eredita Hashtable, che è uguale a HashMap, ma tutti i suoi metodi sono sincronizzati. Puoi semplicemente visualizzare tutti i valori dal file delle proprietà sullo schermo in questo modo:"
// 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. Sembra che tutto sia andato a posto. Grazie, Rishi. Userò questa bella cosa."
GO TO FULL VERSION