Scanner en Java

Scanner en Java - Java - Programmation

Marsh Posté le 22-09-2010 à 23:52:53    

Bonsoir,
 
je cherche à réaliser une méthode qui doit récupérer des informations contenues dans un fichier .txt. je veux trouver comment récuperer plusieurs informations sur la même ligne.
 
sachant que chaque ligne contiendra :  
[string] puis un [string] puis un [string] puis un [string] puis un [double] et a la finun [int], et je dois récupérer ces 3 infos pour chaque ligne
 
exemple de fichier .txt
 
L012 MADAME THERESE Biographie A082  15.00 219
L014 LE DERNIER DES MOHICANS Essai A037  15.80 222
L016 PINOCCHIO Roman A032  14.00 132
L018 LE PETIT CHOSE Roman A043  21.00 115
L020 LETTRES DE MON MOULIN Nouvelles A043  14.60 188
L022 DON QUICHOTTE DE LA MANCHE Roman A021  11.50 347
L024 EUGENIE GRANDET Roman A054  23.45 255
L026 LE LYS DANS LA VALLEE Roman A054  23.00 411
L030 LES MISERABLES Roman A085  9.50 418
L032 LES TRAVAILLEURS DE LA MER Roman A085  19.00 362
 
j'ai essayé avec ca :
 
 public void lireBddLivre(String nomFichier) throws IOException {
  // TODO Auto-generated method stub
       Scanner s = new Scanner(new File(nomFichier));
         s.useDelimiter("\t" );
         
         String titre;
         String code;
         String codeAuteur;
         String categorie;
         int nbPages;
         double prix;
         
         while(s.hasNext())
         {
              code=s.next();
              titre=s.next();
              categorie=s.next();
              codeAuteur=s.next();
              prix=s.nextDouble();
              nbPages=s.nextInt();  //sachant que je dois passer a la ligne suivante !
           
              Livre l = new Livre(titre,code,codeAuteur,categorie,nbPages,prix);
              addLivre(l);
         }
         s.close();
 }
 
quelqu'un peut-il m'aider  SVP ?
 
Édité par Elmoricq : modification du titre ; les titres tout en majuscules sont prohibés, cf. règles de la section.


Message édité par Elmoricq le 23-09-2010 à 14:02:18
Reply

Marsh Posté le 22-09-2010 à 23:52:53   

Reply

Marsh Posté le 23-09-2010 à 09:48:03    

Peut être en t'aidant de cette librairie, http://ostermiller.org/utils/CSV.html .
Sinon tu mets la ligne dans un tableau ou un string et tu utilises la méthode explode().

Reply

Marsh Posté le 23-09-2010 à 10:37:36    

Un Scanner découpe les données en entrée selon un unique délimiteur (dans ton cas les tabulations). Mais ton fichier contient d'autres délimiteurs: les fins de lignes. Commence par lire ton fichier ligne par ligne (BufferedReader) et utilise ton scanner sur chaque ligne.
Sinon, quelques remarques au passage:
- le traitement ligne par ligne te permet de continuer même si une ligne est moisie
- tu es sûr que ton fichier respecte la séparation des champs par des tabulations?
- avec un Scanner, tu risques d'avoir des surprises avec le parsing des Double qui va utiliser un délimiteur décimal en fonction de la locale. Genre il va peut-être s'attendre à trouver des nombres comme "42,0" au lieu de "42.0".

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed