Eine Eigenschaftsliste kann eine andere Eigenschaftsliste als „Standardwert“ enthalten; wenn der Eigenschaftsschlüssel nicht in der ursprünglichen Eigenschaftsliste gefunden werden kann, wird die zweite Eigenschaftsliste durchsucht.
Da Properties von Hashtable erben, können die Methoden put und putAll auf das Properties-Objekt angewendet werden. Diese beiden Methoden werden jedoch nicht empfohlen, da sie es dem Aufrufer ermöglichen, Elemente einzufügen, deren Schlüssel oder Werte keine Strings sind. Verwenden Sie stattdessen die setProperty-Methode. Wenn die Methode „store“ oder „save“ für ein „unsicheres“ Properties-Objekt aufgerufen wird (das also einen Schlüssel oder Wert enthält, der kein String ist), schlägt der Aufruf fehl. Wenn die Methode „propertyNames“ oder „list“ für ein „unsicheres“ Properties-Objekt aufgerufen wird (das also einen Nicht-String-Schlüssel enthält), schlägt der Aufruf ebenfalls fehl.
Eigenschaftendateien sind häufig in JAVA-Anwendungen sichtbar und stellen ebenfalls einen besonders wichtigen Dateityp dar. Es wird verwendet, um einige Informationen der Anwendung zu konfigurieren. Bei diesen Informationen handelt es sich jedoch im Allgemeinen um relativ kleine Daten. Zum Speichern ist keine Datenbankdatei erforderlich, sondern eine allgemeine Textdatei, um sie direkt über die Datei zu speichern Es ist möglicherweise nicht sehr bequem zu lesen, aber es ist anders, wenn es als Eigenschaftendatei gespeichert wird. Im JAVA-Paket gibt es spezielle Klassen zum Bedienen von Eigenschaftsdateien . Diese Klasse ist die Klasse java.uitl.Properties. Da es sich bei der Properties-Klasse um eine Sammlungsklasse handelt, liest und schreibt Properties Eigenschaften in einer Sammlung.
Hinweis: Der folgende Code erfasst die ausgelösten Ausnahmen nicht. Beim Schreiben des Programms müssen Sie auf das Abfangen von Ausnahmen achten.
Die Properties-Klasse erbt die Hashtable-Klasse und übernimmt eine Speichermethode, die den Schlüsselwerten entspricht. Welchen Komfort bietet die Verwendung der Properties-Klasse zum Verwalten von Eigenschaftendateien? Die Properties-Klasse verfügt über spezielle Lese- und Schreibmethoden zum Lesen und Schreiben von Properties-Attributdateien. Sie müssen sich nicht um das Format des Lesens und Schreibens kümmern. Sie müssen lediglich einen Lese- und Schreibstream für die Properties-Klasse bereitstellen. Eigenschaftenmethoden zum Lesen und Schreiben von Eigenschaftendateien sind:
Kopieren Sie den Codecode wie folgt:
//Methode zum Lesen des Attributdateistreams
public void Load(InputStream inStream) löst eine IOException {} aus
//Methode zum Schreiben des Attributdateistreams
public void store(OutputStream out, String comments) löst eine IOException {} aus
Schauen wir uns zunächst an, wie man Eigenschaften aus einer Eigenschaftendatei liest.
Angenommen, wir haben eine neue Eigenschaftendatei namens prop.properties mit folgendem Inhalt erstellt:
Kopieren Sie den Codecode wie folgt:
Sitename=abcjava
siteurl=www.abcjava.com
Der erste Schritt, den wir ausführen müssen, besteht darin, die Datei in das Properties-Klassenobjekt einzulesen. Da ein Parameter von Load InputStream ist, können wir die InputStream-Unterklasse FileInputStream verwenden, um die Eigenschaftsdatei in den Properties-Objektpfad einzulesen Verwenden Sie den FileInputStream(String name)-Konstruktor:
Kopieren Sie den Codecode wie folgt:
Properties prop = new Properties();//Eigenschaftssammlungsobjekt
FileInputStream fis = new FileInputStream("prop.properties");//Properties Dateistream
prop.load(fis);//Laden Sie den Eigenschaftsdatei-Stream in das Properties-Objekt
Nachdem wir wissen, wie man die Eigenschaftendatei liest, müssen wir noch eine weitere sehr wichtige Sache tun: Ändern und Hinzufügen neuer Eigenschaften zur Eigenschaftendatei. Hier verwenden wir die Methode „public void store“ (OutputStream out, String comments). Die Eigenschaftssammlung Für einen OutputStream-Stream wird hier genau wie beim InputStream-Stream auch dessen Unterklasse FileOutputStream (String-Name) verwendet, daher werde ich hier nicht auf Details eingehen.
Bevor wir die Eigenschaftensammlung in der Datei speichern, müssen wir noch etwas tun: Ändern und Hinzufügen neuer Eigenschaften zur Eigenschaftensammlung. Eine hier verwendete Methode ist setProperty(String key, String Diese Methode besteht darin, den Wert des Schlüssels zu ändern, wenn der angegebene Schlüssel in der Attributsammlung vorhanden ist. Wenn er nicht vorhanden ist, wird er auch über die Schlüssel-Wert-Beziehung gespeichert dass die Properties-Klasse seit Hashtable erbt, ist es auch möglich, mit den Methoden put und putAll von Hashtable zu speichern, aber von der Verwendung dieser beiden Methoden wird dringend abgeraten, da sie es dem Aufrufer ermöglichen, Elemente einzufügen, deren Schlüssel oder Werte keine Strings sind. Verwenden Sie stattdessen die setProperty-Methode. Wenn die Store- oder Save-Methode für ein Properties-Objekt aufgerufen wird, das „gefährdet“ ist (d. h. einen Nicht-String-Schlüssel oder -Wert enthält), schlägt der Aufruf fehl. Schauen wir uns nun die Verfahren zum Ändern, Hinzufügen und Speichern von Attributen an:
Kopieren Sie den Codecode wie folgt:
//Ändern Sie den Attributwert von Sitename
prop.setProperty("sitename", "Boxcode");
//Fügen Sie ein neues Attributstudio hinzu
prop.setProperty("studio", "Boxcode Studio");
//Dateiausgabestream
FileOutputStream fos = new FileOutputStream("prop.properties");
//Speichern Sie die Properties-Sammlung im Stream
prop.store(fos, „Copyright (c) Boxcode Studio“);
fos.close();//Schließe den Stream
Als nächstes folgt der Quellcode des gesamten Programms:
Kopieren Sie den Codecode wie folgt:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;
öffentliche Klasse PropertyEditor {
public static void main(String[] args) löst eine Ausnahme aus {
Properties prop = new Properties(); // Eigenschaftensammlungsobjekt
FileInputStream fis = new FileInputStream("prop.properties");//Eigenschaften Dateieingabestream
prop.load(fis);//Laden Sie den Eigenschaftsdatei-Stream in das Properties-Objekt
fis.close(); // Den Stream schließen
// Den Attributwert abrufen, Sitename wurde in der Datei definiert
System.out.println("Get property value: sitename=" + prop.getProperty("sitename"));
// Den Attributwert abrufen. Das Land ist in der Datei nicht definiert. In diesem Programm wird ein Standardwert zurückgegeben, die Attributdatei wird jedoch nicht geändert.
System.out.println("Get property value: country=" + prop.getProperty("country", "China"));
// Ändere den Attributwert von Sitename
prop.setProperty("sitename", "Boxcode");
//Fügen Sie ein neues Attributstudio hinzu
prop.setProperty("studio", "Boxcode Studio");
//Dateiausgabestream
FileOutputStream fos = new FileOutputStream("prop.properties");
// Speichern Sie die Properties-Sammlung im Stream
prop.store(fos, „Copyright (c) Boxcode Studio“);
fos.close();//Schließe den Stream
}
}