"I dag udforsker vi et andet nyt og interessant emne: egenskaber. "

"I Java er det kutyme at gøre programmer fleksible og lette at tilpasse, altså let konfigurerbare."

"For eksempel kopierer dit program en gang i timen filer fra en bestemt mappe, zipper dem og sender dem til dig i e-mail. For at gøre dette skal programmet kende den mappe, hvorfra filerne vil blive taget fra, og e-mailadressen hvor de skal sendes. Sådanne data gemmes normalt ikke i applikationskode, men i separate egenskabsfiler ."

Dataene i denne fil gemmes som nøgleværdipar, adskilt af et lighedstegn.

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

"Til venstre for tegnet er navnet (nøglen), til højre er værdien."

"Så dette er en slags tekstlig repræsentation af et HashMap?"

"Generelt, ja."

"For nemheds skyld i arbejdet med sådanne filer har Java en speciel Properties-klasse. Properties-klassen arver Hashtable<Object,Object>. Den kan endda opfattes som en Hashtable, der kan indlæse sig selv fra en fil."

"Her er dens metoder:"

Metode Beskrivelse
void load(Reader reader) Indlæser egenskaber fra filen repræsenteret af et Reader-objekt
void load(InputStream inStream) Indlæser egenskaber fra filen repræsenteret af et InputStream-objekt
void loadFromXML(InputStream in) Indlæs egenskaber fra en XML-fil
Object get(Object key) Returnerer værdien for den angivne nøgle. Denne metode er arvet fra Hashtable
String getProperty(String key) Returnerer en egenskabsværdi (streng) efter nøgle.
String getProperty(String key, String defaultValue) Returnerer en egenskabsværdi med nøgle eller defaultValue, hvis der ikke er en sådan nøgle.
Set<String> stringPropertyNames() Returnerer en liste over alle nøgler

"Med andre ord, du behøver faktisk kun at udføre to operationer - indlæse data fra en fil til et Properties- objekt og derefter få disse egenskaber ved hjælp af getProperty ()-metoden. Nå, og glem ikke, at du kan bruge Properties- objektet som f.eks. et HashMap ."

"Her er et andet eksempel:"

Kode
// 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. Så vi opretter et Properties-objekt og sender derefter en fil til det. Til indlæsningsmetoden. Og så kalder vi bare getProperty. Ikke?"

"Ja."

"Og du sagde også, at det kan bruges som et HashMap? Hvad mente du?"

"Klassen Properties arver Hashtable, som er det samme som HashMap, men alle dens metoder er synkroniserede. Du kan blot vise alle værdierne fra egenskabsfilen på skærmen sådan her:"

Kode
// 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. Alt ser ud til at være faldet på plads. Tak, Rishi. Jeg vil bruge denne seje ting."