"I dag utforsker vi et annet nytt og interessant emne: eiendommer. "

"I Java er det vanlig å gjøre programmer fleksible og lett tilpassbare, dvs. lett konfigurerbare."

"For eksempel, én gang i timen kopierer programmet filer fra en bestemt katalog, zipper dem og sender dem til deg i e-post. For å gjøre dette, må programmet vite katalogen der filene skal hentes fra, og e-postadressen hvor de skal sendes. Slike data lagres vanligvis ikke i applikasjonskode, men i en egen egenskapsfil ."

Dataene i denne filen lagres som nøkkel-verdi-par, atskilt med et likhetstegn.

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

"Til venstre for skiltet er navnet (nøkkelen), til høyre er verdien."

"Så dette er en slags tekstlig representasjon av et HashMap?"

"Generelt, ja."

"For enkelhets skyld i arbeid med slike filer, har Java en spesiell Properties-klasse. Properties-klassen arver Hashtable<Object,Object>. Den kan til og med tenkes på som en hashtabell som kan laste seg selv fra en fil."

"Her er metodene:"

Metode Beskrivelse
void load(Reader reader) Laster egenskaper fra filen representert av et Reader-objekt
void load(InputStream inStream) Laster egenskaper fra filen representert av et InputStream-objekt
void loadFromXML(InputStream in) Last inn egenskaper fra en XML-fil
Object get(Object key) Returnerer verdien for den angitte nøkkelen. Denne metoden er arvet fra Hashtable
String getProperty(String key) Returnerer en egenskapsverdi (streng) etter nøkkel.
String getProperty(String key, String defaultValue) Returnerer en egenskapsverdi etter nøkkel eller defaultValue hvis det ikke finnes en slik nøkkel.
Set<String> stringPropertyNames() Returnerer en liste over alle nøkler

"Med andre ord, du trenger faktisk bare å utføre to operasjoner – laste data fra en fil til et Properties- objekt og deretter få disse egenskapene ved å bruke getProperty ()-metoden. Vel, og ikke glem at du kan bruke Properties- objektet som f.eks. et HashMap ."

"Her er et annet 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 lager et Properties-objekt, og sender deretter en fil til det. Til innlastingsmetoden. Og så kaller vi bare getProperty. Ikke sant?"

"Japp."

"Og du sa også at det kan brukes som et HashMap? Hva mente du?"

"Klassen Properties arver Hashtable, som er det samme som HashMap, men alle metodene er synkronisert. Du kan ganske enkelt vise alle verdiene fra egenskapsfilen på skjermen slik:"

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 ut til å ha falt på plass. Takk, Rishi. Jeg kommer til å bruke denne kule tingen."