Une liste de propriétés peut contenir une autre liste de propriétés comme « valeur par défaut » ; si la clé de propriété est introuvable dans la liste de propriétés d'origine, la deuxième liste de propriétés est recherchée.
Étant donné que les propriétés héritent de Hashtable, les méthodes put et putAll peuvent être appliquées à l'objet Properties. Toutefois, ces deux méthodes sont déconseillées car elles permettent à l'appelant d'insérer des éléments dont les clés ou valeurs ne sont pas des String. Utilisez plutôt la méthode setProperty. Si la méthode store ou save est appelée sur un objet Properties « non sécurisé » (c’est-à-dire contenant une clé ou une valeur non String), l’appel échouera. De même, si la méthode propertyNames ou list est appelée sur un objet Properties « non sécurisé » (c’est-à-dire contenant une clé non-String), l’appel échouera.
Les fichiers de propriétés sont souvent visibles dans les applications JAVA et constituent également un type de fichier particulièrement important. Il est utilisé pour configurer certaines informations de l'application, mais ces informations sont généralement des données relativement petites. Il n'est pas nécessaire d'utiliser un fichier de base de données pour les enregistrer, mais utilisez un fichier texte général pour les enregistrer si elles sont enregistrées directement via Fichier. , il peut être stocké et enregistré. Ce n'est pas très pratique à lire, mais c'est différent s'il est enregistré en tant que fichier de propriétés. Les fichiers de propriétés ont des valeurs de clé correspondantes. Dans le package JAVA, il existe des classes spéciales pour exploiter les fichiers de propriétés. . Cette classe est la classe java.uitl.Properties Puisque la classe Properties est une classe de collection, Properties lira et écrira les propriétés dans une collection.
Remarque : Le code suivant ne capture pas les exceptions levées. Lors de l'écriture du programme, vous devez faire attention à la capture des exceptions. Il est recommandé de gérer les exceptions capturées.
La classe Properties hérite de la classe Hashtable et adopte une méthode de stockage correspondant aux valeurs clés. Quelle est la commodité d'utiliser la classe Properties pour gérer les fichiers de propriétés ? La classe Properties dispose de méthodes de lecture et d'écriture spéciales pour lire et écrire les fichiers d'attributs Properties. Vous n'avez pas à vous soucier du format de lecture et d'écriture. Il vous suffit de fournir un flux de lecture et d'écriture pour la classe Properties. Les méthodes de propriétés utilisées pour lire et écrire les fichiers de propriétés sont :
Copiez le code comme suit :
//Méthode pour lire le flux du fichier d'attributs
public void load (InputStream inStream) lance IOException {}
//Méthode pour écrire le flux du fichier d'attributs
public void store (OutputStream out, String comments) lance IOException {}
Voyons d’abord comment lire les propriétés d’un fichier de propriétés.
Supposons que nous ayons créé un nouveau fichier de propriétés nommé prop.properties avec le contenu suivant :
Copiez le code comme suit :
nom du site=abcjava
siteurl=www.abcjava.com
La première étape que nous devons faire est de lire le fichier dans l'objet de classe Properties. Puisque l'un des paramètres de chargement est InputStream, nous pouvons utiliser la sous-classe InputStream FileInputStream pour lire le fichier de propriétés dans l'objet Properties, nous connaissons le chemin prop.properties. utilisez le constructeur FileInputStream(String name) :
Copiez le code comme suit :
Properties prop = new Properties();//Objet de collection de propriétés
FileInputStream fis = new FileInputStream("prop.properties");//Flux de fichiers de propriétés
prop.load(fis);//Charger le flux du fichier de propriétés dans l'objet Propriétés
Après avoir su lire le fichier de propriétés, nous avons une autre chose très importante à faire, qui est de modifier et d'ajouter de nouvelles propriétés au fichier de propriétés. Ici, nous utilisons la méthode public void store (OutputStream out, String comments). la collection de propriétés Pour un flux OutputStream, tout comme le flux InputStream, sa sous-classe FileOutputStream (nom de la chaîne) est également utilisée ici, je n'entrerai donc pas dans les détails ici.
Avant d'enregistrer la collection de propriétés dans le fichier, nous avons encore une chose à faire : comment modifier et ajouter de nouvelles propriétés à la collection de propriétés. Une méthode utilisée ici est setProperty(String key, String. valeur), cette méthode consiste à modifier la valeur de la clé lorsque la clé spécifiée existe dans la collection d'attributs. Si elle n'existe pas, créez une nouvelle clé. Elle est également enregistrée via la relation clé-valeur, mais cela mérite d'être noté. dont hérite la classe Properties. Depuis Hashtable, il est également possible de sauvegarder à l'aide des méthodes put et putAll de Hashtable, mais l'utilisation de ces deux méthodes est fortement déconseillée car elles permettent à l'appelant d'insérer des éléments dont les clés ou valeurs ne sont pas des String. Utilisez plutôt la méthode setProperty. Si la méthode store ou save est appelée sur un objet Properties qui est « à risque » (c’est-à-dire qui contient une clé ou une valeur autre qu’une chaîne), l’appel échouera. Eh bien, jetons un coup d'œil aux procédures de modification, d'ajout et de sauvegarde des attributs :
Copiez le code comme suit :
//Modifier la valeur de l'attribut du nom du site
prop.setProperty("sitename", "Boxcode");
//Ajouter un nouveau studio d'attributs
prop.setProperty("studio", "Boxcode Studio");
// Flux de sortie du fichier
FileOutputStream fos = new FileOutputStream("prop.properties");
//Enregistrez la collection Properties dans le flux
prop.store(fos, "Copyright (c) Boxcode Studio");
fos.close();//Fermer le flux
Voici ensuite le code source de l'ensemble du programme :
Copiez le code comme suit :
importer java.io.FileInputStream ;
importer java.io.FileOutputStream ;
importer java.util.Properties ;
Éditeur de propriétés de classe publique {
public static void main (String[] args) lève une exception {
Properties prop = new Properties(); // Objet de collection de propriétés
FileInputStream fis = new FileInputStream("prop.properties");//Flux d'entrée du fichier de propriétés
prop.load(fis);//Charger le flux du fichier de propriétés dans l'objet Propriétés
fis.close(); // Ferme le flux
// Récupère la valeur de l'attribut, le nom du site a été défini dans le fichier
System.out.println("Obtenir la valeur de la propriété : sitename=" + prop.getProperty("sitename"));
// Récupère la valeur de l'attribut. Le pays n'est pas défini dans le fichier. Une valeur par défaut sera renvoyée dans ce programme, mais le fichier d'attribut ne sera pas modifié.
System.out.println("Obtenir la valeur de la propriété : country=" + prop.getProperty("country", "Chine"));
// Modifier la valeur de l'attribut du nom du site
prop.setProperty("sitename", "Boxcode");
//Ajouter un nouveau studio d'attributs
prop.setProperty("studio", "Boxcode Studio");
// Flux de sortie du fichier
FileOutputStream fos = new FileOutputStream("prop.properties");
// Enregistrez la collection Properties dans le flux
prop.store(fos, "Copyright (c) Boxcode Studio");
fos.close();//Fermer le flux
}
}