Bonjour, je souhaiterais savoir :
- quel type de fichier properties il faut utiliser normal, xml ?
- comment faire un fichier properties dynamique, pour enregistrer les préferences d'un utilisateur
merci
Version imprimable
Bonjour, je souhaiterais savoir :
- quel type de fichier properties il faut utiliser normal, xml ?
- comment faire un fichier properties dynamique, pour enregistrer les préferences d'un utilisateur
merci
Je n'utilise que des normaux mais cela vient du fait que j'ai commence a utiliser les Properties bien avant que le format XML ne soit dispo. Mise a part que les fichier XML sont probablement plus gros (car plus verbeux) je ne crois pas qu'il y ait reellement de differences a l'usage.
Soit :
- tu etends la classe Properties et tu appelle store() des qu'une valeur est modifiee par l'utilisateur.
- tu ne passe pas par les Properties mais tu utilises plutot l'API Preferences (qui est justement faite pour stocker les preferences utilisateur) qui stocke ce genre d'information de maniere dependante du systeme (base de registre sur Windows, fichier XML dans une arborescence cachee sous UNIX).
La solution la plus simple à ta question c'est Apache Commons Configuration (http://jakarta.apache.org/commons/configuration/) : cette librairie implémente tout ce dont tu as besoin:
- choix entre fichier à plat (format properties) ou xml : seul le format du fichier change
- enregistrement des modifications
- rechargement à chaud
et plein d'autres fonctionnalités très utiles, alors pourquoi se fatiguer ;)
D'autant que si tu commences avec des fichiers à plat puis que tu veuilles passer à du XML, il n'y a pas plus de 2 lignes à changer
Jacques Desmazières
Pourrais-tu préciser quelle méthode de quelle classe utiliser pour enregistrer et lire des paramètres dans un fichier ini stp. Car il y en a pas mal et j'ai un peu de peine là :?
Pour les fichiers properties: PropertiesConfiguration (même si l'extension n'est pas properties mais que le format correspond), et pour les fichiers XML: XMLPropertiesConfiguration ou XMLConfiguration en fonction de la structure.
Sinon tu peux passer par une factory en définissant le ou les fichiers à lire dans une fichier de configuration en XML:
Code:
1
2 ConfigurationFactory factory = new ConfigurationFactory("config.xml"); Configuration config = factory.getConfiguration();
(extrait de la doc Apache : Mixing Configuration SourcesCode:
1
2
3
4
5 <?xml version="1.0" encoding="ISO-8859-1" ?> <configuration> <system/> <properties fileName="application.properties"/> </configuration>
Jacques Desmazières
:ccool: Merci de vos réponses, je vais utiliser Apache Commons Configuration.
J'ai en fait une question liée aux fichiers properties, comment et ou stocker les mots de passe pour une connexion à une base de données ?
merci
Tout dépend dans quel environnement : si c'est sur un serveur J2EE, le mieux est d'utiliser un datasource, et dans ce cas il suffit de déléguer l'authentification au serveur d'appli (avec JAAS ou autre), sinon le mieux est peut être de le stocker dans un fichier de configuration encrypté (le fichier ou juste le mot de passe)
Jacques Desmazières
Pour les mot de passe il faut les hasher, c'est le seul moyen sur de stocker un mot de passe.
En gros le principe c'est de crypter le mot de passe avec lui-même comme clé de cryptage. Il faut voir si il existe une classe qui permet de le faire en Java.
Pour le fichier de configuration ini, je n'ai pas réussi avec Apache Commons Configuration.
J'ai trouvé une alternative en utilisant simplement la classe de l'API de Sun: java.io
Je me suis inspiré du code qu'on peut trouver a cette adresse.
Il suffit d'integrer le fichier ConfigMgt.java à son projet et de prendre exemple sur le main.java pour les appels de méthodes.
Ce code est peut-être un peu plus long, mais il est assez sur et entièrement configurable.
:lol: Merci Bloodscalp, excelent (ConfigMgt) pour la gestion du fichier ini. Pour le crypatge je vais essayer l'algorithme DES (relativement simple).
merci
Hello,Citation:
Envoyé par bouye
Je ne trouve pas l'implémentation Unix. J'aimerais m'en inspirer pour le faire comme ça sous Windows aussi. Une idée ?
L'API fait partie de la JVM depuis Java 1.4 voir package java.util.prefs. L'endroit ou se fait le stockage est dependant du systeme et n'est pas manipulable directement par le programmeur :
Sous Windows le stockage se fait dans :
- HKEY_CURRENT_USER/Software/JavaSoft/Prefs/ pour le noeud utilisateur
- HKEY_LOCAL_MACHINE/Software/JavaSoft/Prefs/ pour le noeud systeme
Sous UN*X le stockage se fait dans :
- ~/.java/.userPrefs pour le noeud utilisateur
- /etc/.java/.systemPrefs/ pour le noeud systeme
Pour les autres platformes faire des tests et lire la doc de la JVM appropriee.