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 :

Récupérer bloc de texte dans fichier en fct des num de ligne


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut Récupérer bloc de texte dans fichier en fct des num de ligne
    Bonjour,

    Voila l'algo sur lequel je bute.
    J'ai un fichier texte à un endroit défini, je le lis (jusqu'ici pas de problème) et lorsque je tombe sur la ligne ayant comme texte "toto" je dois alors vérifier si 2 lignes au dessus j'ai la valeur "titi" comme texte.
    Si c'est le cas alors je prends les 40 lignes au dessus de "titi", "titi" compris et je les stock dans une arrayList et je fais ca pour tout le fichier car il y a bcp de chance d'avoir plusieurs "toto" et "titi", ainsi que le bloc de texte de 40 lignes en question.
    J'ai essayé les LineNumberReader qui marche bien, mais même lorsque je set le nombre de ligne à la valeur de mon choix et que je fais un readLine() dessus, il ne prend pas la ligne que je veux...
    Peut-être que la meilleure solution serait de stocker au fur et à mesure dans un tableau et d'effacer au fur et à mesure, je ne sais pas trop.
    Merci d'avance pour votre aide

    TP

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Je pense que tu devrais conserver les 42 dernières lignes lues dans une structure de taille limite de ton choix (pile, liste, ...).
    Ainsi, lorsque tes conditions sont réunies, il ne te reste plus qu'à récupérer le contenu de ta structure

  3. #3
    Membre averti
    Inscrit en
    Août 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 62
    Par défaut
    Merci pour la réponse!
    Mais justement comment les mettre dans mon tableau et savoir que ce sont les 42 bonnes lignes?
    Réécraser à chaque fois?comment (dsl j'ai un peu de mal avec l'algo sur les tableau...!)
    Merci

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Bonjour,

    je vien de fair un test avec LinkedList qui implement Queue

    c'est peut etre pas tres optimisé mais bon

    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
            Scanner scanner = new Scanner(new File("fichier.txt"));
     
            LinkedList<String> queue = new LinkedList<String>();
     
            String ligne = null;
     
            while(scanner.hasNextLine()){
     
                ligne = scanner.nextLine();
                //System.out.println(ligne);
                queue.offer(ligne);
                if(ligne.equals("toto")){
                    if(queue.size()>41){
                        if(queue.get((queue.size()-1)-2).equals("titi")){
                            System.out.println(Arrays.toString(queue.toArray()));
                        }
                    }
                }else{
                    if(queue.size()>41){
                        queue.poll();
                    }
                }
            }

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Oui, c'est ça: chaque fois que tu insères une ligne dans ta liste, tu vérifies s'il y en a déjà 42. Si c'est le cas, tu supprimes la plus "ancienne" et tu ajoutes la "nouvelle"
    Tu peux par exemple, créer un décorateur de liste (Cf Design Pattern) pour imposer une limite de taille et implémenter le comportement décrit ci-dessus
    Un début d'implémentation:
    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
     
    public class ListeTailleLimite<E> implements List<E> {
    	private int MAX_SIZE;
    	private List<E> decore;
     
    	public ListeTailleLimite(List<E> decore, int max_size) {
    		super();
    		MAX_SIZE = max_size;
    		this.decore = decore;
    	}
     
    	@Override
    	public boolean add(E e) {
    		if (decore.size() == MAX_SIZE) {
    			decore.remove(decore.size()-1);
    		} 
    		return decore.add(e);
    	}
     
    	@Override
    	public void add(int index, E element) {
    		decore.add(index, element);
    	}
     .....

Discussions similaires

  1. modification texte dans fichier
    Par Mick_Lisah dans le forum Langage
    Réponses: 1
    Dernier message: 08/03/2007, 08h54
  2. Récupérer occurences de texte dans Excel
    Par fgreg306 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/12/2006, 21h29
  3. [win32] Recherche texte dans fichier
    Par raphael_kindt dans le forum Windows
    Réponses: 1
    Dernier message: 26/07/2006, 13h51
  4. [IO]Récupérer une chaine texte dans un flux HTTP
    Par elitost dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/03/2005, 11h39
  5. [langage] Ecrire un bloc de texte dans un fichier
    Par sarahbes dans le forum Langage
    Réponses: 6
    Dernier message: 10/06/2004, 12h40

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