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 :

Extraire une chaine de caractere à partir d'un fichier


Sujet :

Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Par défaut Extraire une chaine de caractere à partir d'un fichier
    Bonjour,

    Je posséde un fichier info.txt dont le contenu est le suivant:
    classe
    chaine1
    chaine2
    .....
    chaine n

    Definition
    ......
    J'ai besoin d'extraire 2 chaines:
    1. la chaine située entre classe et definition ( c'est à dire: ]classe, definition[ )
    2. la chaine situé aprés définition ( c'est à dire: ]definition, fin_du_fichier])
    Jespere que c'est claire
    Et je serai tres, tres, tres......... reconnaissant si qq1 pourra m'aider.
    @tt.

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Quel est ton problème exactement? Tu as un début de code?

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Par défaut
    Non, j'ai pas un début de code, mais je veux savoir comment je peux résoudre ce pb car c'est une extraction de chaine à partir d'un fichier.

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Voici un début de piste: parcours du fichier ligne par ligne. A toi ensuite de compléter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            BufferedReader input =  new BufferedReader(new FileReader("fichier.txt")) ;
     
            String line = null ;
            while((line = input.readLine()) != null) {
                if(line.equals("classe")) {
                    // Commencer l'enregistrement des lignes aprés classe
                }
                else if(line.equals("Definition")) {
                    // Arréter l'enregistrement des lignes aprés classe et commencer
                    // l'enregistrement des lignes aprés définition
                }
            }
    La recherche "lire fichier texte java" dans google aurait également pu t'aider

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Février 2009
    Messages
    220
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 220
    Par défaut
    Bonjour,

    Je ne vois pas que votre code est juste, car à chaque fois qu'il va lire une ligne à partir du fichier, il va vérifier si ce ligne ="classe" ou pas, et s'il n'est pas égale il va pas entrer dans le bloc "if" et par la suite il va pas enregistrer les lignes après la ligne qui correspond à "classe".
    Et la mm pour l'autre partie.

    Il faut corriger cette solution.

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Par défaut
    Merci pour vous,

    Donc j'ai fait les correction necessaire et voila le code pour la 1 partie (c'est à dire l'extraction de ]classe,definition[)que je l'ai utiliser mais il me lance un erreure (Vous pouvez la trouvez ci dessous):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if(line.equals("classe"))
      {
       while(((line = input.readLine()) != null)&& (!line = input.equals("definition")))
         {
    	chaine = chaine + line;
         }
        System.out.println(chaine);
      }
    Et voila l'erreur:
    operateur ! cannot be applied to java .lang.String
    Merci bien si vous pouvez m'aider encore.
    @tt.

  7. #7
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    491
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 491
    Par défaut
    Mon code est une ébauche pour montrer comment lire chaque ligne du fichier.

    Lorsque j'ai donné le code, j'ai bien indiqué qu'il fallait compléter

    J'avais en tête l'utilisation de deux booléens que l'on activerai lorsqu'on rencontre le tag "classe" ou "Définition" ppour activer ou non l'enregistrement des lignes suivant où l'on se trouve dans le fichier. L'enregistrement de la ligne se ferait donc aprés les deux tests indiqués, en stockant la ligne suivant la valeur des deux booléens correspondant aux deux tags.

    Bref, je pense que c'est assez simple a faire, algorithmiquement parlant

    Quant a ton erreur, je pense qu'il te faut prendre un bon bouquin de java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    && (!line = input.equals("definition"))
    Tu applique l'opérateur ! (not) à line, qui est une référence vers un objet de type String, ce qui est interdit. De plus ta condition n'a pas de sens, si tu souhaite vérifier que ta ligne n'est pas égale à Definition il te faut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    && ! line.equals("definition")

  8. #8
    Membre éprouvé Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Par défaut
    Sinon t'utilises la Class Scanner de l'API java (à partir de la version 5) + une expression rationnel (RegEx) et ça devra le faire. Elle est faite pour ça.

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2009
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 63
    Par défaut
    Bonjour,

    J'ai asseyez avec vos propositions mais j'ai pas obtenu une resultat satisfaite.
    Donc si qq1 a un solution pour mon pb merci bien de l'envoyer.

    Merci encore

  10. #10
    Membre éprouvé Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Par défaut
    Fait voir ce que tu as essayé.
    Fait voir où cela bloque.

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 98
    Par défaut
    Bonjour,

    essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Scanner sc; 
                                sc = new Scanner(tonFichier)
                               while(sc.hasNext){....}

  12. #12
    Membre confirmé Avatar de blackhock
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 75
    Par défaut
    Bonjour,
    as tu essayé avec les expressions régulière Pattern et Matcher
    while(matcher.find());
    bon courage

Discussions similaires

  1. Réponses: 11
    Dernier message: 19/04/2011, 15h30
  2. Réponses: 14
    Dernier message: 12/12/2007, 17h08
  3. Réponses: 11
    Dernier message: 05/11/2007, 14h38
  4. Réponses: 5
    Dernier message: 26/04/2007, 15h39
  5. Réponses: 3
    Dernier message: 22/04/2007, 02h12

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