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 :

[debutant] Lecture en boucle d'un fichier texte


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut [debutant] Lecture en boucle d'un fichier texte
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     while ((ligne = lecteurAvecBuffer.readLine()) != null){
             tab[i] = ligne; // je met chaque ligne du fichier dans un tableau
     
                    if (tab[i].equals(mot)){
                       page.open();
                    }else{
                         page1.open
                    }
      i = i+1;
     }
    Le problème (et c'est logique) c'est que le traitement se fait pour toutes les lignes du fichier donc mes pages page et page1 s'ouvre un certain nombre de fois.
    Mais je ne vois pas comment faire autrement.
    POuvez vous m'aider ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 63
    Points
    63
    Par défaut
    que veux tu faire ?
    à quoi correspond page et page1 ?
    n'ouvrir qu'une seule fois page et page1 ?
    traiter page/1 et ensuite continuer de lire le fichier ?

    merci de nous eclaircir

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut
    Si une ligne de mon fichier correspond exactement à "mot" alors je veux ouvrir page sinon je veux ouvrir page1.

    Je veux ouvrir page et page1 une seule fois

    Merci

  4. #4
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Slaut
    Essaie comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    boolean found = false;
    while (((ligne = lecteurAvecBuffer.readLine()) != null) && (found == false)){
             tab[i] = ligne; // je met chaque ligne du fichier dans un tableau
     
                    if (tab[i].equals(mot)){
                       page.open();
                       found = true;
                    }else{
                         page1.open
                       found = true;
                    }
      i = i+1;
     }

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut
    Merci pour ton aide.

    Il me reste encore un petit problème si le fichier est vide, ca ne fonctionne pas.
    Alors que si je met déjà une ligne dedans (à la main), le programme fonctionne

    Une idée ???

  6. #6
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    --> javadoc de java.io.File.exists(), un petit tour par la même occasion sur la doc de la méthode isFile() ne fera pas de mal.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut
    J'ai modifié mon code de la manière suivante : en ajoutant if ((lecteurAvecBuffer.readLine()) == null) alors j'ajoute une ligne dans le fichier et sinon je fais le reste du programme.
    Le problème c'est que si je met la partie du if en commentaire, le reste fonctionne et inversement
    mais le programme ne fonctionne pas avec le if else

    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
     
      try {
                lecteurAvecBuffer = new BufferedReader(new FileReader("fichier.txt"));
             if ((lecteurAvecBuffer.readLine()) == null){
                    ecrivain =  new PrintWriter(new BufferedWriter(new FileWriter("fichier.txt")));
                    ecrivain.println(nom);
                    ecrivain.close();
                    page.open           
                }else{
     
                    while ((ligne = lecteurAvecBuffer.readLine()) != null && found == false){
                        tab[i] = ligne;                                    
                        if (tab[i].equals(mot)){
                            page1.open();
                            found = true;
                        }else{
                            ecrivain =  new PrintWriter(new BufferedWriter(new FileWriter("fichier.txt",true)));
                            ecrivain.println(nom);
                            ecrivain.close();
                            page.open();
                            found = true;
                        }
                        i = i+1;
                    }}
                       }

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 63
    Points
    63
    Par défaut
    essaye avec (ligne = ....) comme quand tu lis dans le while

    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
     
    try {
    	File fIn = new File("fichier.txt");
    	if(fIn.exists()){
    		lecteurAvecBuffer = new BufferedReader(fIn);
     
    		if ((ligne = lecteurAvecBuffer.readLine()) == null){
    			ecrivain =  new PrintWriter(new BufferedWriter(new FileWriter("fichier.txt")));
    			ecrivain.println(nom);
    			ecrivain.close();
    			page.open           
    		}else{
    			while ((ligne = lecteurAvecBuffer.readLine()) != null && found == false){
    			tab[i] = ligne;                                    
    			if (tab[i].equals(mot)){
    				page1.open();
    				found = true;
    			}else{
    				ecrivain =  new PrintWriter(new BufferedWriter(new FileWriter("fichier.txt",true)));
    				ecrivain.println(nom);
    				ecrivain.close();
    				page.open();
    				found = true;
    			}
    			i = i+1;
    			}
    		}
    	}
    }

  9. #9
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut
    ca ne fonctionne tjs pas

  10. #10
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Je crois que tu devrais utiliser la class Scanner pour te simplifier la vie.

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Scanner scan = new Scanner("c:\\fichier.txt", "mot_recherché");
    if (scan.hasNext())
            page1.open();
    else
            page.open();
    Le Scanner permet d'autre facon faire:

    http://java.sun.com/j2se/1.5.0/docs/...l/Scanner.html

  11. #11
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 301
    Points : 75
    Points
    75
    Par défaut
    J'ai cherché dans le doc, il existe effectivement une méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Scanner(File source, String charsetName)
    mais quand je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Scanner scan = new Scanner("utilisateurs.txt","mot");
    j'ai une erreur du type : cannot find constructeur Scanner(String,String) alors que j'ai bien mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    import java.util.Scanner;
    merci pour votre aide

  12. #12
    Membre actif Avatar de jibbi
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 165
    Points : 205
    Points
    205
    Par défaut
    Oups ! c'est mon erreur, désolé

    c'est un object File en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Scanner scan = new Scanner(new File("c:\\fichier.txt"), "mot");

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

Discussions similaires

  1. lecture et décodage d'un fichier texte: Solution ou leurre?
    Par j.p.mignot dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/01/2008, 14h33
  2. Réponses: 50
    Dernier message: 19/10/2007, 23h38
  3. lecture et placement dans un fichier texte
    Par shams dans le forum SL & STL
    Réponses: 3
    Dernier message: 28/05/2007, 15h56
  4. Lecture de valeurs dans un fichier texte (txt)
    Par zerbault dans le forum Fortran
    Réponses: 2
    Dernier message: 22/01/2007, 10h29
  5. [Debutant] stockage d'infos dans un fichier texte
    Par Cheeper dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 12/01/2007, 11h02

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