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

Format d'échange (XML, JSON...) Java Discussion :

java.util.prefs.Preferences anciens noeuds qui s'affichent


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut java.util.prefs.Preferences anciens noeuds qui s'affichent
    Salut,

    J'utilise la classe java.util.prefs.Preferences pour lire mon fichier XML. Plus précisément je fais un Prefrences.systemRoot() pour récupérer tous les nœuds qui existent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FileSystemResource f = new FileSystemResource(configFile);
    Preferences.importPreferences(f.getInputStream());
    Preferences prefs = Preferences.systemRoot()
    prefs.childrenNames();
    Mais voila j'ai un problème. Je retrouve dans cette structure des nœuds que j'avais créer il y a longtemps, qui n'existent plus dans mon fichier XML et nul par ailleurs.

    Est ce que vous savez comment pourrais je effacer ces nœuds de sorte qu'il m'affiche que les nœuds qui existent réellement dans mon fichier ?

    Je crois que cette classe persiste ces données quelque part mais je vois pas comment lui dire de renitialiser

    J'espère que j'étais clair.

    J'ai essayé de faire un Prefrences.systemRoot().clear() mais ca change rien

    Merci

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Le Problème vient ici d'un mauvais choix d'api de ta part. En effet la classe Preference permet de stocker des informations au niveau de l'OS afin qu'elles soient permanentes. De fait sous Windows la classe Preference utilise la base de registre pour stocker ces informations, ton importation de fichier XML ne faisant qu'ajouter des infos supplémentaires au registre.

    Si tu veux faire un système de préférences réellement local à ton appli il vaudrait mieux que tu passes par l'API Properties, si tu veux garder ton format XML spécifique a toi de developper ta propre API (en passant par du XStream ou autre API de sérialisation XML).

    Sinon si tu veux utiliser les Preference, il te faut travailler avec dans l'esprit voulu, c'est à dire que si suppression de préférence il y a, elle doit être faite via le code.

  3. #3
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Merci beaucoup pour ta reponse,

    Donc l'utilisation de Preferences entraine une persistance des données de mes fichiers XML.

    Je vais voir si je peux supprimer ces nœuds à partir d'un petit code

    Je laisse le Topic ouvert au cas ou la suppression ne me donne rien


    Merci encore

  4. #4
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Pourriez vous m'expliquez pourquoi le faite de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Preferences.systemRoot().removeNode();
    ou
    Preferences.systemRoot().clear();
    ne marche pas

  5. #5
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par javadoc
    The removal is not guaranteed to be persistent until the flush method is called on this node (or an ancestor).
    Et de plus

    Code javadoc encore : Sélectionner tout - Visualiser dans une fenêtre à part
    Throws: BackingStoreException - if this operation cannot be completed          due to a failure in the backing store, or inability to           communicate with it. IllegalStateException - if this node (or an ancestor) has already          been removed with the removeNode() method. UnsupportedOperationException - if this method is invoked on           the root node.

    Bref tu n'as aucunement le droit de supprimer le root des preferences (encore heureux)

  6. #6
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Ok un grand merci a vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. java.util.prefs.Preferences et Struts
    Par borozhim dans le forum Struts 1
    Réponses: 1
    Dernier message: 27/09/2011, 16h47
  2. java/util/prefs/BackingStoreException, besoin d'aide
    Par bertoni dans le forum Langage
    Réponses: 3
    Dernier message: 09/03/2011, 13h08
  3. Utilisation de la classe java.util.prefs.Preferences
    Par a33608 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 12/10/2009, 09h27
  4. a propos de java.util.prefs.Preferences
    Par MathiasM dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 08/01/2008, 12h09
  5. Forcer ma "java.util.prefs.PreferencesFactory" ?
    Par natha dans le forum Langage
    Réponses: 4
    Dernier message: 08/03/2007, 10h32

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