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

Entrée/Sortie Java Discussion :

Relire les lignes d'un fichier texte


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 13
    Par défaut Relire les lignes d'un fichier texte
    Bonjour,

    je cherche à relire les lignes d'un fichier texte que j'ai déja parcouru par une boucle while.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    InputStream ips2=new FileInputStream("configure.tpl"); 
    InputStreamReader ipsr2=new InputStreamReader(ips2); 
    BufferedReader br2=new BufferedReader(ipsr2); 
     
    String ligne; 
    String content=""; 
     
    while((ligne=br2.readLine())!=null){ 
    content=content+"\n"+ligne; 
    }

    -- le problème réside dans le fait que que je veux parcourir de nouveau mon fichier dans la suite de mon programme en utilisant encore la méthode java "readLine()", et puisque le fichier est déja parcouru par la même méthode, alors le String donné par cette méthode est nul.

    je cherche une méthode qui permet de revenir à la première ligne du fichier.

    Merci pour votre aide.

  2. #2
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Bonjour,

    Déjà, il faut que tu gères correctement la fermeture du flux une fois que tu as fini ta lecture. Il y a un exemple dans la FAQ qui explique comment faire
    http://java.developpez.com/faq/java/...eLigneParLigne

    Après, pourquoi ne pas faire un nouveau BufferedReader?

    Sinon, un solution serait de mettre un mark() en début de lecture sur ton flux puis une fois fini faire un reset() pour revenir sur le mark (cependant cette solution n'est pas terrible car tu dois limiter le nombre de caractères lus avant de perdre ta marque donc sur un gros fichier, tu as de forte chance de la perdre) ...

  3. #3
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Une autre solution que le mark(int), reset() et d'utiliser un FileChannel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private static Charset charset = Charset.forName("ISO-8859-15");
    private static CharsetDecoder decoder = charset.newDecoder();
     
    public void testFileChannel() throws IOException {
    	FileInputStream inStream = new FileInputStream("conf/foo.txt");
    	FileChannel ch = inStream.getChannel();
    	MappedByteBuffer bb = ch.map(FileChannel.MapMode.READ_ONLY, 0, (int) ch.size());
    	CharBuffer cb = decoder.decode(bb);
    }
    Note: Attention tout le fichier est "mappé" en mémoire.

    Note2 : Avec cette méthode tu peux relire à ta guise le buffer. Si tu veux relire le fichier à partir du FileChannel, il faut le repositionner à 0.

Discussions similaires

  1. Programme pour compter les lignes d'un fichier texte?
    Par codon21 dans le forum Windows
    Réponses: 1
    Dernier message: 19/03/2009, 07h36
  2. indicer les lignes d'un fichier texte
    Par cre31400 dans le forum C++
    Réponses: 18
    Dernier message: 17/07/2008, 16h08
  3. Supprimer les lignes d'un fichier texte
    Par radhwene dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2007, 11h01
  4. Boucle qui parcourt tout les ligne d'un fichier text
    Par accro-macro dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 10/05/2007, 20h21
  5. Réponses: 2
    Dernier message: 19/09/2006, 21h34

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