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 :

Lecture répétitive dans un fichier txt


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 3
    Points
    3
    Par défaut Lecture répétitive dans un fichier txt
    Bonjour,
    je souhaite lire dans un fichier texte mais pas qu'une seule fois. Donc pour cela je ne fais pas de close() avant la fin de mon traitement. Cependant à chaque fois que je sors de mon fichier texte et que je souhaite revenir pour le lire, je ne repars pas du début du fichier mais là où j'en étais resté en le quittant. Pourquoi??
    Qu'est ce que je dois faire pour revenir au début de mon fichier texte à chaque nouvelle lecture??
    Merci

  2. #2
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    avezc quoi lis tu ton fichier ? As tu lu la javadoc correspondante ?

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Je n'arrête pas de faire des recherches sur le forum et le net mais je ne trouve rien. J'utilise Netbeans 5.0 et pour lire mon fichier je fais :

    while((ligne=nomfichier.readLine())!=null){
    //Traitement
    }

    mon problème c'est que j'ai une fonction qui me permet de lire dans le fichier texte mais quand je sors de cette fonction pour y rentrer à l'aide d'une boucle, je ne retourne pas au début de mon fichier texte.
    Quelque part je trouve cela normal de revenir là où je m'étais arrêtée dans le fichier. Cependant je ne sais pas ce qu'il me faut ajouter pour qu'il revienne au début du texte à chaque fois que je rentre dans ma fonction sans pour autant devoir fermer mon fichier et le rouvrir.

  4. #4
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par in
    avezc quoi lis tu ton fichier ?
    Citation Envoyé par Didine95
    lire mon fichier je fais :

    while((ligne=nomfichier.readLine())!=null){
    //Traitement
    }
    oui mais nomfichier c'est quoi comme objet ?

    Citation Envoyé par in
    As tu lu la javadoc correspondante ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Bonjour,

    Tu veux de l'aide. Il faut nous envoyer un code minimum compilable qui reproduit ton problème.


    Je présent que tu ne sauves pas la position actuelle de lecture dans ton fichier avant l'appel à ta méthode. Après l'appel, il ne reste plus qu'à repositionner "le pointeur de lecture".

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Je ne peux pas mettre tout mon code car il est long et en plusieurs fonctions donc j'ai essayé de faire un récapitulatif

    Mon main :
    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
     
    try{
         BufferedReader in1=new BufferedReader(new FileReader("monfichierlecture1.txt"));
         BufferedReader in2=new BufferedReader(new FileReader("monfichierlecture2.txt"));
         try{
              BufferedWriter out = new BufferedWriter(new FileWriter("monfichierécriture.txt"));
              Application appli=new Application(in1,out);
              out.flush();
              out.close();
         }finally{
              in1.close();
              in2.close();
         }
    }
    catch{(IOException e){
              System.out.println(e);
    }
    Mon application :
    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
     
    try{
         BufferedWriter inter1=new BufferedWriter(new FileWriter("monfichierécritureinter.txt");
         try{
              while((ligne=in1.readLine())!=null){
                    Config conf=new Config();
                    conf.Config(ligne,in1,in2,out,inter1);
              }finally{
              inter1.flush();
              inter1.close();
         }
    }
    catch(IOException e){
         System.out.println(e);
    }
    Ma Config :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try{
         //Je compare ligne qui appartient à in1 avec chacune des lignes de in2 
                     //Si je trouve la même ligne dans in2
                        out.write(ligne);
                        out.newLine();
                     //Si je ne trouve pas la même ligne
                        inter1.write(ligne);
                        inter1.newLine();
    }catch(IOException e){
                System.out.println(e);
    }
    Et mon problème est que si par exemple je passe à la 2eme ligne de mon fichier in1 pour faire la comparaison suivante, je me retrouve là où j'étais restée dans le fichier in2 et du coup si j'ai une ligne qui est identique mais qu'elle se situe plus haut dans le texte in2, il ne la voit pas et m'écrit la ligne dans inter1 et non dans out!

  7. #7
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par in pour la trroisième fois
    As tu lu la javadoc correspondante ?
    apparemment non !


    tu dispose d'une méthode reset(), qui retourne à l'endroit que tu auras spécifié par la méthode mark()

  8. #8
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    J'ai fait des recherches sur mark() et reset() mais je ne vois pas comment les placer dans mon programme sachant que la taille de mon fichier texte (en octets) n'est pas fixe. Comment je peux faire pour connaitre la taille de mon fichier parce que c'est ça qu'il me manque à moins qu'il y ait plus simple pour marquer la toute première ligne??

  9. #9
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    ben la mark tu la positionne quand tu commences à lire le fichier. Je comprend pas le problème. C'est pour l'argument de mark() ?

    pour connaitre la taille d'un fichier fais une recherche sur le forum tu devrais trouver. Par contre il est apparemment déconseillé de mettre une valeur trop grande.

    C'est peut être ton algo qui est bancal ?

  10. #10
    Candidat au Club
    Inscrit en
    Juin 2006
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    il faut spécifier la taille en octet du fichier dans la méthode mark() non??

Discussions similaires

  1. [XL-2007] Lecture et écriture dans un fichier .txt en VBA
    Par zanys dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/05/2011, 09h45
  2. [PERL]Prob lecture/écriture dans un fichier ".TXT"
    Par Magcom dans le forum Langage
    Réponses: 8
    Dernier message: 29/07/2010, 10h36
  3. Réponses: 4
    Dernier message: 24/05/2010, 13h06
  4. Problème de lecture/ecriture dans un fichier txt
    Par fraid49 dans le forum Général Python
    Réponses: 6
    Dernier message: 20/11/2008, 11h32
  5. Lecture de données dans un fichier txt
    Par Marcusss dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/04/2007, 14h40

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