IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Ecrire dans une "ressource" du package


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut Ecrire dans une "ressource" du package
    Bonjour,

    Ce que je cherche à faire, c'est enregistrer les préférences des utilisateurs de mon appli pour les recharger à la prochaine ouverture de l'appli.

    J'ai donc pensé aux fichiers "ini" et j'ai vu qu'il existait les properties en Java.

    Je voudrais donc savoir si il est possible d'intégrer un fichier properties directement dans mon .jar et de pouvoir le modifier si l'utilisateur change les préférences.

    Pour charger le fichier et récupérer les infos, pas de prob ça fonctionne je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    try {
    	java.util.Properties propFile = new java.util.Properties();
    	java.io.InputStream infile = getClass().getResourceAsStream("/projet/config.properties");
    	propFile.load(infile);
    	infile.close();
    	System.out.println(propFile.getProperty("test"));	// Affiche une propriété pour testé : OK !
    } catch (Exception e) { 
    	System.out.println("Erreur Exception" + e);
    }
    Par contre si e souhaite le modifier... je ne trouve pas de moyen. Il ne semble pas exister de méthode qui renvoie un OutputStream via getClass()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.io.OutputStream outfile = ???;
    Est ce possible ?

    Merci

  2. #2
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    question préliminaire: pourquoi ne pas utiliser java.util.prefs pour gérer des préférences?
    le principe c'est que les préférences ne sont pas stockées comme des ressources de configuration. typiquement une ressource sera dans un jar que tu ne va pas modifier (autre cas: si l'application est téléchargée les ressources sont sur le serveur mais, en général, les préférences sont sur le poste client -sauf si on en décide autrement-).
    maintenant tu peux personnaliser ton système de stockage des préférences mais il serait mieux de passer par cette API.

  3. #3
    Membre Expert
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Par défaut
    En effet, je suis encore dans mes début en Java et je ne connaissais pas cette classe qui m confient parfaitement !

    Merci !

    Juste quelques questiosn à propos de ces préférences.
    J'ai vu qu'il y avait dans la faq :
    http://java.developpez.com/faq/java/...refUtilisateur

    * Preferences.systemRoot() : préférences globales du système.
    * Preferences.systemNodeForPackage(Class c) : préférences du système pour une classe donnée.
    * Preferences.userRoot() : préférences globales de l'utilisateur.
    * Preferences.userNodeForPackage(Class c) : préférences globales de l'utilisateur pour une classe donnée.
    Donc si j'ai bien compris :
    userRoot = par exemple la session windows ouverte (-> une préférence par session) ?
    systemRoot = la machine qui exécute l'application quel que soit la session ouverte (-> préférences identique à toutes les session) ?

    Autre chose, si lorsque on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prefs.put("clef","valeur");
    la "clef" que l'on utilise est déjà utilisé par une autre application Java, ça ne risque pas posé problème ?

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par Seb33300 Voir le message
    , si lorsque on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    prefs.put("clef","valeur");
    la "clef" que l'on utilise est déjà utilisé par une autre application Java, ça ne risque pas posé problème ?
    si tu utilises bien l'architecture par package tu verras bien que ta "clef" n'est que dans le contexte de ton package: donc pas de pb.

Discussions similaires

  1. Ecrire dans une ressource .txt
    Par Kikouyou1080 dans le forum VB.NET
    Réponses: 8
    Dernier message: 04/10/2010, 13h02
  2. Réponses: 4
    Dernier message: 15/04/2005, 15h25
  3. Réponses: 5
    Dernier message: 15/04/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo