Bien souvent, un fichier de configuration sera de la forme suivante :
clef=valeurLes deux classes Properties et ResourceBundle permettent de lire ce type de fichier. Mais quelle est donc la différence ?
Le cas Properties
La classe Properties charge son contenu à partir d'un flux. Exemple :Properties prop = new Properties() ; try { prop.load(this.getClassLoader().getResourceAsStream("file.properties")) ; } catch (IOException e) { e.printStackTrace() ; }Il apparait que le fichier doit être chargé par le développeur.
Il n'y a donc qu'un fichier.
Si pour une raison, le fichier change suivant le contexte, le développeur doit indiquer un autre nom.
Le cas ResourceBundle
La classe ResourceBundle permet la localisation, c'est à dire permet de prendre un fichier en fonction de certains paramètres.La localisation permet de définir des valeurs suivant le contexte.
Exemple :
Locale locale_fr = new Locale("fr", "FR") ; Locale locale_us = new Locale("us", "US") ;A présent, un fichier de paramétrage doit être chargé. Ce fichier dépend de l’environnement (langue) car il contient les libellées d'une page web.
Locale locale_fr = new Locale("fr", "FR") ; ResourceBundle messages = ResourceBundle.getBundle("messages", locale_fr) ;La classe ResourceBundle va donc chercher le premier fichier dans l'ordre suivant :
messages_fr_FR.properties messages_fr.properties messages.propertiesIl est a noter que la classe ResourceBundle ajoute automatiquement les constantes et l'extension du fichier.
Ce principe peux aussi s'appliquer à des environnements techniques :
Locale locale_unix = new Locale("UNIX"); Locale locale_windows = new Locale("WINDOWS");Dans lequel pourra être mis, la commande pour invoquer un shell par exemple.
Aucun commentaire:
Enregistrer un commentaire