"Vandaag onderzoeken we een ander nieuw en interessant onderwerp: eigenschappen. "

"In Java is het gebruikelijk om programma's flexibel en gemakkelijk aanpasbaar te maken, dat wil zeggen gemakkelijk configureerbaar."

"Uw programma kopieert bijvoorbeeld een keer per uur bestanden uit een bepaalde map, zipt ze en stuurt ze naar u in e-mail. Om dit te doen, moet het programma weten uit welke map de bestanden gehaald zullen worden, en het e-mailadres waar ze naartoe moeten worden gestuurd. Dergelijke gegevens worden meestal niet in de applicatiecode opgeslagen, maar in aparte eigenschappenbestanden ."

De gegevens in dit bestand worden opgeslagen als sleutel-waardeparen, gescheiden door een gelijkteken.

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

"Links van het teken staat de naam (sleutel), rechts staat de waarde."

"Dus dit is een soort tekstuele weergave van een HashMap?"

"Over het algemeen wel."

"Om het werken met dergelijke bestanden gemakkelijker te maken, heeft Java een speciale klasse Properties. De klasse Properties erft Hashtable<Object,Object>. Het kan zelfs worden gezien als een hashtabel die zichzelf uit een bestand kan laden."

"Hier zijn de methoden:"

Methode Beschrijving
void load(Reader reader) Laadt eigenschappen uit het bestand dat wordt vertegenwoordigd door een Reader-object
void load(InputStream inStream) Laadt eigenschappen uit het bestand dat wordt vertegenwoordigd door een InputStream-object
void loadFromXML(InputStream in) Eigenschappen laden vanuit een XML-bestand
Object get(Object key) Retourneert de waarde voor de opgegeven sleutel. Deze methode is geërfd van Hashtable
String getProperty(String key) Retourneert een eigenschapswaarde (tekenreeks) per sleutel.
String getProperty(String key, String defaultValue) Retourneert een eigenschapswaarde per sleutel of defaultValue als een dergelijke sleutel niet bestaat.
Set<String> stringPropertyNames() Retourneert een lijst met alle sleutels

"Met andere woorden, u hoeft eigenlijk maar twee bewerkingen uit te voeren: laad gegevens uit een bestand in een Properties- object en verkrijg deze eigenschappen vervolgens met behulp van de getProperty ()-methode. Nou, en vergeet niet dat u het Properties- object kunt gebruiken zoals een hashmap ."

"Hier is nog een voorbeeld:"

Code
// 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. Dus we maken een Properties-object en geven er dan een bestand aan door. Naar de load-methode. En dan roepen we gewoon getProperty aan. Juist?"

"Ja."

"En je zei ook dat het gebruikt kan worden als een HashMap? Wat bedoelde je?"

"De klasse Properties erft Hashtable, wat hetzelfde is als HashMap, maar alle methoden zijn gesynchroniseerd. U kunt eenvoudig alle waarden uit het eigenschappenbestand op het scherm weergeven, zoals dit:"

Code
// 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. Alles lijkt op zijn plaats te vallen. Dank je, Rishi. Ik ga dit coole ding gebruiken."