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 :

Lire un fichier texte à partir de la fin


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Par défaut Lire un fichier texte à partir de la fin
    Bonjour,

    Y-a t-il un moyen simple de lire ligne par ligne un fichier texte en partant de la fin.

    Je m'appuie sur la solution "romaintaz" : http://www.developpez.net/forums/d26...e-fichier-fin/ mais il lit caractère par caractère en utilisant un RandomAccessFile.

    Je peux utiliser cette méthode mais ça me donne un gros code bien moche. Quelqu'un a-t-il une solution plus propre?

  2. #2
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Pour ma part, je trouve que le code de romaintaz n'est pas moche, et du moment qu'il marche, autant l'utiliser.
    Je trouve son code assez propre aussi
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  3. #3
    Membre confirmé Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Par défaut
    moue le truc c'est que je veux lire ligne par ligne en partant de la fin. Du coup je me met à la fin, je lis byte par byte jusqu'à trouver un saut de ligne, je lis la ligne, je remonte d'une ligne + 1 bit, je relis bit par bit etc...

    S'il n'y pas d'autre api à part le RandomAcessFile je m'en contenterai mais bon je trouve que c'est assez bas niveau. Désolé je suis un peu fainéant .

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 971
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 971
    Par défaut
    Mie,

    Il n'y a pas de moyen simple de lire ligne par ligne un fichier texte de la fin au début, SAUF si toutes les lignes ont exactement la même longueur, ce qui n'est que rarement le cas (fichier de données bien formatées, par exemple).

  5. #5
    Membre confirmé Avatar de Space23
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 185
    Par défaut
    Pas le choix alors, j'ai fait l'implémentation tout m'a l'air de bien marcher. Voici le code pour ceux que ça interesserait :

    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
     
    long position = this.fileToMonitor.length();
    int code;		
    while (--position > 0){
            raf.seek(position - 1);
            code = raf.readByte();
            // Teste si on a affaire à un saut à la ligne.
            if ((code == 13) || (code == 10)) {
                   ligne = raf.readLine();
     
                    //C'est la ligne qui nous interesse?
                    if (isGoodLine(ligne)) {
                    	raf.seek(position);
                    	extractInfo(raf);
                    	raf.seek(position);
                    }
            }
    }
    raf.close();

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Attention car certains encodages peuvent stocker un caractères sur plusieurs octets... Ce qui pourrait poser problème.


    Par curiosité quel est la raison de tout cela ???


    a++

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

Discussions similaires

  1. Lire fichier texte à partir d'une ligne spécifique
    Par Msxty dans le forum VBScript
    Réponses: 7
    Dernier message: 15/07/2011, 15h42
  2. Réponses: 0
    Dernier message: 09/06/2011, 15h50
  3. Réponses: 1
    Dernier message: 24/11/2004, 16h54
  4. [Fichier] Lire un fichier texte long
    Par _Eric_ dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 18/08/2004, 15h22
  5. Réponses: 2
    Dernier message: 26/05/2004, 17h53

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