Lorsque nous écrivons des programmes, certains paramètres sont souvent modifiés, mais ce changement n'est pas ce que nous prévoyons. Par exemple, nous avons développé un module qui exploite la base de données. Pendant le développement, nous nous connectons à la base de données locale et à l'IP, au nom de la base de données, au nom de la table, à l'hôte de la base de données et à d'autres informations sont locales. Pour créer le module qui exploite les données universelles, les informations ci-dessus ne peuvent pas être écrites dans le programme. Habituellement, notre approche consiste à utiliser des fichiers de configuration pour le résoudre.
Divers langues ont leurs propres types de fichiers de configuration pris en charge. Par exemple, Python, il prend en charge les fichiers .ini. Parce qu'il a une classe ConfigPaser à l'intérieur pour prendre en charge la lecture et l'écriture de fichiers .ini, les programmeurs peuvent fonctionner librement des fichiers .ini selon les méthodes fournies par cette classe. Dans Java, Java prend en charge la lecture et l'écriture de fichiers .properties. La classe Java.util.properties intégrée de JDK nous fournit une commodité dans les fichiers .properties en fonctionnement.
un. Formulaire de fichier .properties
# Ce qui suit est le serveur et les informations de base de données dbport = localhost databasename = mydb dbuserName = root dbpassword = root # Ce qui suit est la table de données information dbable = mytable # Ce qui suit est les informations du serveur IP = 192.168.0.9
Dans le fichier ci-dessus, nous supposons que le nom du fichier est: le fichier test.properties. Le premier comportement de # commente l'information; sur le côté gauche du signe égal "=" nous l'appelons clé; sur le côté droit du signe égal "=" nous l'appelons la valeur. (En fait, c'est ce que nous appelons souvent les paires de valeurs clés) La clé devrait être une variable dans notre programme. Et la valeur est configurée en fonction de la situation réelle.
deux. Classe de propriétés dans JDK
La classe de propriétés existe dans la cellule Java.util, qui hérite de Hashtable, et il fournit plusieurs méthodes principales:
1. GetProperty (clé de chaîne), recherchez des propriétés dans cette liste de propriétés avec la touche spécifiée. Autrement dit, via la clé de paramètre, nous obtenons la valeur correspondant à la clé.
2. Load (InputStream Instream), lit la liste d'attributs (touche et paire d'éléments) dans le flux d'entrée. Obtenez toutes les paires de valeurs de clé dans le fichier en chargeant le fichier spécifié (tel que le fichier test.properties ci-dessus). Pour GetProperty (clé de chaîne) à rechercher.
3. SetProperty (clé de chaîne, valeur de chaîne), méthode de hashtable d'appel. Il définit la paire de valeurs de valeur de valeur en appelant la méthode de put de la classe de base.
4. Store (OutputStream Out, String Commentaires), écrit la liste des propriétés (touche et paire d'éléments) dans cette table de propriétés au flux de sortie dans un format adapté pour le chargement dans le tableau Propriétés à l'aide de la méthode de chargement. Contrairement à la méthode de charge, cette méthode écrit des paires de valeurs clés vers le fichier spécifié.
5. Clear (), effacez toutes les paires de valeurs clés chargées. Cette méthode est fournie dans la classe de base.
Avec les méthodes ci-dessus, nous pouvons fonctionner sur le fichier .properties!
3. Exemple de fichier de propriétés de lecture Java
Il existe une boîte de fichiers de propriétés.properties, avec le contenu suivant:
Color = redname = boxLength = 18Width = 7heigth = 8
Pour obtenir la valeur d'attribut, vous pouvez utiliser le code suivant:
InputStream dans = null; Properties p = new Properties (); try {in = new BufferedInputStream (new FileInputStream ("box.properties")); p.load (in);} catch (filenotfoundException e) {// TODO Block de catch généré automatiquement e.printStackTrace ();} catch (ioException e) {// TODO Auto-Generated Catch Block E.PrintStackTrace ();} Enumation <objet> keys = p.Keys (); while (keys.hasmoreElements ()) {string key = (string) keys.nexttelement (); System.out.println (Key + ":" + P.GetProperty (Key));}ou:
InputStream in; ResourceBundle rb = null; try {in = new bufferedInputStream (new FileInputStream ("box.properties")); RB = new PropertyResourceBundle (in);} catch (filenotfoundException e1) {// TODO GÉNÉRATEUR AUTO GÉNÉRÉ BLOC E1.PRINTSTACKTRACE ();} Catch (ioException E) {// TODO Generated Catch Block E.PrintStackTrace ();} If (RB! = Null) {énumération <strict> <string>; while (keys.hasmoreElements ()) {string key = (string) keys.nexttelement (); System.out.println (clé + ":" + rb.getString (clé)); }}Cependant, l'ordre de sortie est différent du fichier d'origine.