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

Java Discussion :

Récupérer du texte à partir d'un fichier


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Par défaut Récupérer du texte à partir d'un fichier
    Bonjour, je suis une nouvelle dans ce forum.

    Voilà j'ai un fichier texte généré par l’exécution d'une requête mdx, le problème c'est que je veux récupérer une partie de ce fichier. Je vous montre une partie de ce fichier :
    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
    1740 [http-8080-1] DEBUG mondrian.sql  - 0: SqlMemberSource.getMemberChildren: executing sql [
    select 
        "geostore_country"."store_country_name" as "c0", 
        "geostore_country"."store_country_geom" as "c1"
    from 
        "geostore_store" as "geostore_store", 
        "geostore_city" as "geostore_city", 
        "geostore_state" as "geostore_state", 
        "geostore_country" as "geostore_country"
    where 
        "geostore_state"."store_country_id_fk" = "geostore_country"."store_country_id" and 
        "geostore_city"."store_state_id_fk" = "geostore_state"."store_state_id" and 
        "geostore_store"."store_city_id_fk" = "geostore_city"."store_city_id" and 
        UPPER("geostore_country"."store_country_name") = UPPER('USA')
    group by 
        "geostore_country"."store_country_name", 
        "geostore_country"."store_country_geom"
    order by 
        "geostore_country"."store_country_name" ASC
    ]
    J'aimerais récupérer le texte à partir de "SqlMemberSource.getMemberChildren" jusqu'au caractère "]".

    Merci d'avance pour votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    Si tu connais les éléments de débuts et de fin voici ce que tu peux faire:
    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
     
    BufferedReader file = new BufferedReader(new FileReader(new File("fichier.txt")));
    String begin = "SqlMemberSource.getMemberChildren";
    String end = "]";
    StringBuilder text = "";
    boolean isEnd = false;
    boolean isBegin = false;
    if (file == null) {
    	throw new FileNotFoundException("File not found.");
    }
    // on lit le fichier ligne par ligne
    do {
                 line = file.readLine();
    	if (line != null) {
    		if(line.contains(begin)) {
                                      // si on a une ligne de début on la stocke
                                      isBegin = true;
                                      text.append(line);
                              } else if (line.equals(end) {
                                      // si on a une ligne de fin on la stocke
                                       isEnd = true;
                                       text.append(line);
                              } else if(isBegin && !isEnd) {
                                       // si on a une ligne entre celle de début et de fin on la stocke
                                       text.append(line);
                              }
    	}
    } while (file != null);
    file.close();
    Attention, dans ce code on parcours tout le fichier et je ne l'ai pas testé (pas le temps désolé, je l'ai écris en "live") mais l'idée est là. Tu peux utiliser equals() si tu es sûr de ton texte ou contains() pour indiquer "si ta ligne contient". Je t'ai mis un exemple pour chaque donc à toi de voir ce que tu veux. Tu pourrais aussi utiliser des expressions régulières pour rechercher plutot qu'une chaine.

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Le principe : lire ligne à ligne le fichier (Voir FAQ, ou Files.readAllLines()).

    Ensuite le principe général est de parcourir toutes les lignes, et de détecter la ligne de début (celle qui contient "SqlMemberSource.getMemberChildren") et la ligne de fin (celle qui contient le caractère "]", après une ligne de départ). On stocke d'une manière ou d'une autre ces lignes et quand on les a tout trouvé, on peut connaitre le texte entre le début et la fin.

    Donc en gros :

    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
    je traite une ligne = je teste si c'est une ligne de début, 
    si oui je la stocke
    si non
      si c'est une ligne de fin : 
          si j'ai une ligne de début en stock, 
                 j'ai trouvé toutes les lignes qui m'interesse, j'en extrait le texte, je le stocke, et je fais comme si je n'avais pas trouver de liste de début(*), et je continu à lire le fichier;
          sinon
                 il y a une erreur dans le fichier (j'ai une fin et pas de début)
      sinon 
          si j'ai une ligne de début en stock
                je stocke la ligne (c'est une ligne qui entre un début et un fin qu'on a pas encore trouvé
          sinon 
             j'ignore la ligne (elle n'est pas entre un début et une fin
    je boucle sur la ligne suivant (je continu de lire mon fichier).
     
    quand j'ai lu toutes les lignes si j'ai des lignes en stocke, c'est que je n'ai pas trouvé de fin : à priori c'est une erreur dans le fichier...
    • Pour stocker les textes extraits : une List<String>
    • Pour stocker les lignes en cours d'extraction, y compris la ligne de début et de fin : soit une List<String>, soit un StringBuilder.
      Le test pour savoir si on a un début en stock
      • Pour une List : si elle n'est pas vide
      • Pour un StringBuilder, si sa taille est >0

      Pour "je fais comme si je n'avais pas trouver de liste de début(*)"
      • Pour une List : je la vide (clear())
      • Pour un StringBuilder, je met sa taille à zéro


    Ensuite, pour tester si une chaîne contient quelque certains caractères, utiliser les méthodes de la classe String (me semble suffisant pour ton cas), comme contains(), ou indexOf() pour savoir où ça se trouve. et substring() pour récupérer qu'une seule partie, pour extraire le texte
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 174
    Par défaut
    Désolé joel.drigo je t'ai grillé la politesse^^

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par philou44300 Voir le message
    Désolé joel.drigo je t'ai grillé la politesse^^
    J'ai vu, pas grave, personne n'a l'exclu des réponses, non plus. J'ai laissé parce que les deux réponses sont complémentaires (et j'allais pas virer tout ce que j'avais tapé =P)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 11
    Par défaut
    ça marche très bien merci à vous

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

Discussions similaires

  1. [MySQL] récupérer des champs à partir d'un fichier texte
    Par sanouta dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/03/2010, 14h47
  2. Récupérer des données à partir d'un fichier EXCEL
    Par cati_78 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/04/2009, 20h21
  3. Réponses: 5
    Dernier message: 17/06/2008, 17h05
  4. utiliser xslt pour afficher du texte à partir d'un fichier xml
    Par med_ellouze dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 23/08/2007, 14h52
  5. Réponses: 1
    Dernier message: 06/08/2007, 10h39

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