"Idag utforskar vi ett annat nytt och intressant ämne: fastigheter. "
"I Java är det vanligt att göra program flexibla och lättanpassade, dvs lätt konfigurerbara."
"Till exempel, en gång i timmen kopierar ditt program filer från en viss katalog, zippar dem och skickar dem till dig i e-post. För att göra detta måste programmet känna till katalogen där filerna kommer att hämtas från och e-postadressen vart de ska skickas. Sådana data lagras vanligtvis inte i applikationskod, utan i en separat egenskapsfil ."
Data i denna fil lagras som nyckel-värdepar, åtskilda av ett likhetstecken.
data.properties file
directory = c:/text/downloads
email = zapp@codegym.cc
"Till vänster om tecknet är namnet (nyckel), till höger är värdet."
"Så det här är en slags textrepresentation av en HashMap?"
"I allmänhet, ja."
"För att underlätta arbetet med sådana filer har Java en speciell Properties-klass. Properties-klassen ärver Hashtable<Object,Object>. Den kan till och med ses som en hashtabell som kan ladda sig själv från en fil."
"Här är dess metoder:"
Metod | Beskrivning |
---|---|
void load(Reader reader) |
Laddar egenskaper från filen som representeras av ett Reader-objekt |
void load(InputStream inStream) |
Laddar egenskaper från filen som representeras av ett InputStream-objekt |
void loadFromXML(InputStream in) |
Ladda egenskaper från en XML-fil |
Object get(Object key) |
Returnerar värdet för den angivna nyckeln. Denna metod ärvs från Hashtable |
String getProperty(String key) |
Returnerar ett egenskapsvärde (sträng) med nyckel. |
String getProperty(String key, String defaultValue) |
Returnerar ett egenskapsvärde med nyckel eller defaultValue om det inte finns någon sådan nyckel. |
Set<String> stringPropertyNames() |
Returnerar en lista över alla nycklar |
"Med andra ord, du behöver faktiskt bara utföra två operationer - ladda data från en fil till ett Properties- objekt och sedan hämta dessa egenskaper med metoden getProperty (). Tja, och glöm inte att du kan använda Properties- objektet som en HashMap ."
"Här är ett annat exempel:"
// 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 skapar ett Properties-objekt och skickar sedan en fil till det. Till laddningsmetoden. Och sedan anropar vi bara getProperty. Visst?"
"Japp."
"Och du sa också att den kan användas som en HashMap? Vad menade du?"
"Klassen Properties ärver Hashtable, som är samma som HashMap, men alla dess metoder är synkroniserade. Du kan helt enkelt visa alla värden från egenskapsfilen på skärmen så här:"
// 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. Allt verkar ha fallit på plats. Tack, Rishi. Jag ska använda den här coola saken."
GO TO FULL VERSION