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 :

Ignorer des caractères lors d'une lecture fichier


Sujet :

Langage Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Ignorer des caractères lors d'une lecture fichier
    Bonjour,

    J'ai un projet java à faire dans lequel on me demande de lire le fichier suivant (en version réduite) :

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %% Reseau du metro parisien
    %% projet Java 2A
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %% Stations:
    1:Grande Arche de la Défense:77:465:1
    2:Esplanade de la Défense:91:461:1
    3:Pont de Neuilly:104:457:1
    4:Les Sablons:118:453:1
    5:Porte Maillot:132:448:1
    6:Argentine:149:442:1
    7:Charles de Gaulle, Étoile:170:436:1,2,6
    8:George V:192:428:1
    9:Franklin D. Roosevelt:214:421:1,9
    10:Champs Élysées, Clémenceau:237:414:1,13


    et de restaurer chaque paramètre pour recréer les stations : 1 pour le code, "Grande Arche de la Défense" pour le nom etc...

    Pour cela il faut ignorer tout ce qui se trouve avant la ligne contenant la première station et aussi prendre en compte les caractères délimiteurs à savoir les ":".

    J'espère avoir été assez explicite.
    Merci de votre aide.

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Inaky Voir le message
    Pour cela il faut ignorer tout ce qui se trouve avant la ligne contenant la première station et aussi prendre en compte les caractères délimiteurs à savoir les ":".

    J'espère avoir été assez explicite.
    Merci de votre aide.
    Bah plus qu'à alors Je pense que tu as été explicite sur ce que tu vas faire. Après moi j'ai vu aucune question.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Effectivement avec la question ça serait mieux ^^

    Comment puis-je faire pour lui dire de ne pas prendre en compte jusqu'à la ligne de la station et comment après ligne par ligne je lui dis "ceci correspond au code de la station ceci au nom, etc..." ?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    BufferedReader bufferedReader = new BufferedReader(new FileReader("fichier.txt"));
    String line;
    Pattern p = Pattern.compile("^\\d");
      while ((line = bufferedReader.readLine()) != null){
    	  if(p.matcher(line).find()){
    		  String[] champs = line.split(":");
     
    	  }
      }
    cela ne va lire que les lignes commençants par un chiffre. N'oublie pas de catcher les exceptions et de faire des testes sur la longueur du tableau retourner par split.

    A+.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ok merci je vais regarder ça

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ok donc avec seulement les stations dans mon fichier texte ça fait ce que je veux. Cependant je n'ai pas que des stations dans mon fichier j'ai aussi les connexions entre elle. La coupure dans le fichier entre les deux est là suivante:

    284:Cour Saint-Émilion:439:281:14
    285:Bibliothèque François Mitterand:424:268:14

    %% Connexions:
    1:2:15:1
    2:3:14:1
    3:4:15:1
    4:5:15:1

    De la manière dont j'ai commencé avec le pattern ça pose problème ici. Comment faire ?

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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
    Points : 446
    Points
    446
    Par défaut
    Lors de la lecture de ton fichier, tu peux détecter l'entrée dans une des 2 zones: '%% Stations' et '%% Connexions'.
    Pour chaque zone, tu utilises alors une instance spécifique d'un parser de ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface LineParser {
      void parse(String line);
    }
    Il est agréable d'avoir le choix. La difficulté est alors de faire le bon (ou le moins pire).

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Je ne suis pas sûr d'avoir tout compris. Un parse sert à quoi exactement ?

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Avec while ((line = bufferedReader.readLine()) != null) tu obtiens la ligne courante. A toi de comparer cette ligne avec les lignes clés qui indiquent les type de données. Reste après en fonction du type détecter à appeler l'une ou l'autre méthode pour faire le parsing, méthode que tu dois écrire.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ok très bien. Merci

Discussions similaires

  1. [Batch] Problème avec caractère ! lors d'une lecture de fichier pour extraction
    Par damsmut dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 20/11/2012, 16h21
  2. [PHP 5.3] Perte de caractères lors d'une lecture de fichier
    Par Vince57 dans le forum Langage
    Réponses: 2
    Dernier message: 28/08/2010, 19h03
  3. Réponses: 4
    Dernier message: 25/05/2010, 17h59
  4. [VB.NET]Comment afficher 1 progressbar lors d'une lecture fichier ?
    Par evlp2004@hotmail.com dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/05/2006, 09h00
  5. Réponses: 11
    Dernier message: 27/04/2006, 08h56

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