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

Langage Java Discussion :

probleme avec fichier properties


Sujet :

Langage Java

  1. #1
    Membre du Club Avatar de alexorcet
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 50
    Points
    50
    Par défaut probleme avec fichier properties
    Bonjour a tous

    j'ai un probleme lors de la manipulation de mon fichier properties dans lequelle je sotck des information sur un aeroport
    il est de la forme suivante:
    // piste = matricule de l'avion # etat

    piste3=AMW-S-874\#leaving
    piste2=bobo\#Leaving

    les matricules sont inserés dans une jTextBox,mon premier probleme est je me retrouve avec des \dans mon fichier je ne sais pas comment les eviter.
    le 2eme probleme est quand je fait une lecture du ficher avec la methode suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
                    FileInputStream fis = new FileInputStream(chemin+"airport-states.properties");
                    DataInputStream dis = new DataInputStream(fis);
                    String c = new String();
                    String res = new String();
                    int ligne = 0;
                    while(dis.read()!=-1)
                    {                  
                    c=dis.readLine();                
                    StringBreaker sb = new StringBreaker(c,"=");              
                    v = sb.chercheComposantes();
                    for(int i=0; i<v.size();i++)
                        {    
                        System.out.println("element: "+i+": "+ v.elementAt(i));
                        if(v.elementAt(1).toString().equals("NULL")==false)
                            {
                             StringBreaker sb2 = new StringBreaker(v.elementAt(1).toString(),"#");              
                             Vector ve = sb2.chercheComposantes();                         
                                for(int x=0; x<ve.size()-1;x++)
                                    {    
                                         if(ve.elementAt(0).toString().equals(matav4)==false)
                                         {
                                             System.out.println("avion non trouve");
                                         }else
                                         {
                                            System.out.println("avion trouve");
                                            etat = v.elementAt(0).toString();
                                            System.out.println("etat"+etat);
     
                                         }
                                    }
                            }
                        }
                    System.out.println("Fin ligne:"+ligne);                
                    ligne=ligne+1;
                    }
    la methode chercheComposante() utilise un StringTokenizer qui stock mes tokens dans un vecteur. je me retrouve avec le resultat suivante

    iste1
    iste3

    il me supprime la première lettre de ma clé dans le fichier properties et je vois du tout d'ou ça provient,donc pour faire mes traitement je decale tout d'un espace pour que la lecture se fasse correctement.

    à l'aiiiiiiiiiiide
    MErci d'avance

  2. #2
    Membre habitué Avatar de yakanet
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    Juste une astuce beaucoup plus simple pour charger ton fichier properties, utilise la classe java.util.Properties comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Properties p = new Properties();
    p.load("nom_du_fichier.properties");
    Ensuite itère ta liste de fichier properties pour en faire ton traitement

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Salut, je ne comprends pas l'hsitoire du "\", il est placé volontairement ou non ?
    En gros, tu dois jsute stocker et recuperer des données hors de ton fichier properties ?

    Edit : ps, j'ai rien dit.. S'il y a un "\" avant le "#", c'est surement pour que Java le prenne en compte. Car a la base le symbole est censé etre ignoré dans le fichier, etant donné qu'il sagit d'un commentaire...

    ps: tu ne serais pas étudiant à l'inpres par hasard ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Il y a moyen de faire plus simple je pense...
    Voici un petit exemple :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    Properties props = new Properties();
    props.put("piste1", "bobo #leaving");
    props.put("piste2", "AMW-S-874 #leaving");
     
    String absFile = System.getProperty("user.home")+System.getProperty("file.separator")+"liste.properties";
    FileOutputStream out = new FileOutputStream(absFile);
    props.store(out, "liste de pistes\n-----------------");
     
    for(int i= 0; i<props.size(); i++){
        Properties prop  = processInfo(props.getProperty("piste"+String.valueOf(i+1)));
        prop.list(System.out);
    }
     
    /********     *********** ******/
     
        static Properties processInfo(String value){
     
            StringTokenizer tok = new StringTokenizer(value);
            String matricule = tok.nextToken("\\#");
            String etat = tok.nextToken();
            Properties pp = new Properties();
            pp.put("etat", etat);
            pp.put("matricule", matricule);
     
            return pp;
        }

    Resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    -- listing properties --
    etat=leaving
    matricule=bobo 
    -- listing properties --
    etat=leaving
    matricule=AMW-S-874

  5. #5
    Membre du Club Avatar de alexorcet
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Palmer Voir le message
    Il y a moyen de faire plus simple je pense...
    Voici un petit exemple :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    Properties props = new Properties();
    props.put("piste1", "bobo #leaving");
    props.put("piste2", "AMW-S-874 #leaving");
     
    String absFile = System.getProperty("user.home")+System.getProperty("file.separator")+"liste.properties";
    FileOutputStream out = new FileOutputStream(absFile);
    props.store(out, "liste de pistes\n-----------------");
     
    for(int i= 0; i<props.size(); i++){
        Properties prop  = processInfo(props.getProperty("piste"+String.valueOf(i+1)));
        prop.list(System.out);
    }
     
    /********     *********** ******/
     
        static Properties processInfo(String value){
     
            StringTokenizer tok = new StringTokenizer(value);
            String matricule = tok.nextToken("\\#");
            String etat = tok.nextToken();
            Properties pp = new Properties();
            pp.put("etat", etat);
            pp.put("matricule", matricule);
     
            return pp;
        }

    Resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    -- listing properties --
    etat=leaving
    matricule=bobo 
    -- listing properties --
    etat=leaving
    matricule=AMW-S-874
    Merci pr ta réponse Palmer
    si j'ai bien compris tu suggère d'utilser la methode put() mais cela va inserer une nouvelles proprièté dans mon fichier propeties et moi je veux juste faire une mise à jours donc un setPropety().
    mais le problème que j'ai, c'est quand je saisie mon matricule dans le jTextBox de mon interaface je me retrouve avec un '\'à l'interieur du fichier apres ce le matricule comme illustré ci dessus sans aucune raison et je vois pas d'ou cela provient

    Ps: j'espère que t'es pas vilvens loool

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    1. Le '\' ne provient pas de ta JtextBox. Le '\' joue le rôle d'un "ecape" charactere. Etant donné que le "#" est en fait un commentaire dans le fichier properties. Il faut donc un moyen pour différencier le "#" commentaire et non commentaire. C'est pourca que le '\' est utilisé. C'est donc tout a fait normal.
    Il suffira donc juste a rajouter '\' dans la chaine du tokenizer :
    tok.nextToken("\\#");

    2. Tu n'as pas besoin de te préocupper du Put() (en debut du code), c'etait juste histoire de tester et de mettres des éléments dans le fichier properties.


    3. Je ne comprends pas ton problème, hormis le '\' fantôme qui est inseré..
    Que veux tu faire exactement ?

    4. Non, je ne suis pas Mr. Vilvens

  7. #7
    Membre du Club Avatar de alexorcet
    Inscrit en
    Mai 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 86
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Palmer Voir le message
    1. Le '\' ne provient pas de ta JtextBox. Le '\' joue le rôle d'un "ecape" charactere. Etant donné que le "#" est en fait un commentaire dans le fichier properties. Il faut donc un moyen pour différencier le "#" commentaire et non commentaire. C'est pourca que le '\' est utilisé. C'est donc tout a fait normal.
    Il suffira donc juste a rajouter '\' dans la chaine du tokenizer :
    tok.nextToken("\\#");

    2. Tu n'as pas besoin de te préocupper du Put() (en debut du code), c'etait juste histoire de tester et de mettres des éléments dans le fichier properties.


    3. Je ne comprends pas ton problème, hormis le '\' fantôme qui est inseré..
    Que veux tu faire exactement ?

    4. Non, je ne suis pas Mr. Vilvens

    Merci tu viens de repondre à ma question c'étais le '\' fantome qui me posait le premier probleme.
    mais le 2eme probleme persiste :
    quand je parse mon fichier properties avec la methode ci dessus à la recherche du matricule de l'avion, le premier token d'une ligne du fichier porpertie par exemple piste1=blabla#leaving ,piste1 est le 1er Token devien "iste1" le 'p' a été supprimé.
    je vois pas d'ou ça vient.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 59
    Points
    59
    Par défaut
    Quelle méthode... La mienne ou la tienne ?
    Moi j'ai essayé, je n'ai pas eu de problèmes..

Discussions similaires

  1. gestion des erreurs avec fichier .properties
    Par _momo dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/08/2007, 14h05
  2. Problem avec fichier extenson .rsc
    Par tcharles dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/04/2007, 17h29
  3. Probleme avec fichier vbx
    Par ptitesouris dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 26/09/2006, 12h26
  4. [Tableaux] probleme avec fichier texte
    Par leluis dans le forum Langage
    Réponses: 9
    Dernier message: 29/11/2005, 10h05
  5. Probleme avec fichier .iso
    Par Le Pharaon dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 07/11/2005, 14h11

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