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 :

Erreur d'index lecture fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 26
    Points : 27
    Points
    27
    Par défaut Erreur d'index lecture fichier
    Salut,
    Voici mon code, je lis un fichier ligne par ligne et si la ligne commence par "EXSTRS01" je récupére une partie de la chaine
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package génératorBis;
     
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.StringTokenizer;
     
    public class Div {
     
    	public static void main (String[] args) throws IOException {
     
     
    		 BufferedReader input = new BufferedReader(new FileReader("D:\\RELEVE28112014.txt"));
    		 PrintWriter pt = new PrintWriter (new FileWriter ("D:\\AttijariGenerator\\s.txt"));
     
    		 String l=input.readLine();
    		while (l!=null){
    			if (l.substring(0,8).startsWith("EXSTRS01")){
    				 StringTokenizer st = new StringTokenizer(l, "|");
     
    		 int i =0;
    		 while (st.hasMoreElements()) {
    			 if (i ==47){
    					pt.println((String) st.nextElement());
    					}
    			 i=i+1;
    				String s = (String) st.nextElement();
    			}
    			}
     
    		l=input.readLine();
     
    		}
    		pt.close();
     
    		 input.close();
     
    	}}
    mais j'ai l'exeption suivante
    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 8
    at java.lang.String.substring(Unknown Source)
    at génératorBis.Div.main(Div.java:22)
    malgre que tous les lignes contiennent plus que 8 caractéres!!
    aidez moi svp

  2. #2
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Citation Envoyé par cabistos Voir le message
    malgre que tous les lignes contiennent plus que 8 caractéres!!
    aidez moi svp
    Ben faut croire que c'est pas le cas

    Peut être as tu une ligne vide à la fin du document ?

    Au passage, il n'est pas nécessaire de faire le substring() si tu utilise startWith() juste après qui fait déjà "plus ou moins" le même boulot.

    Tu peux aussi remplacer ton StringTokenizer par un simple split() qui fait exactement pareil.

    Au final ton code peut s'écrire comme ça

    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
     
    public static void main( String[] args ) throws IOException
    {
      BufferedReader input = new BufferedReader( new FileReader( "D:\\RELEVE28112014.txt" ) );
      PrintWriter    pt = new PrintWriter( new FileWriter( "D:\\AttijariGenerator\\s.txt" ) );
     
      String l;
     
      while( ( l = input.readLine() ) != null )
      {
        if( l.startsWith( "EXSTRS01" ) )
        {
          String[] str = l.split( "|" );
          pt.println( str[47] );
     
          // String s = (String)st.nextElement(); Ici j'ai pas compris ce que tu voulais faire de ta variable s
        }
      }
      pt.close();
      input.close();
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 26
    Points : 27
    Points
    27
    Par défaut
    En effet j'ai supprimer une partie du code substring (0,8) et la String s figure ont leurs utilités mais en fait le probléme et le caractére du end of line le l'ai remplacé par \r\n et ca marche.
    Merci bien pour votre intervention et tes remarques

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/05/2015, 16h43
  2. Erreur plutôt tordue lecture fichier
    Par australeolive dans le forum Fortran
    Réponses: 6
    Dernier message: 06/05/2008, 09h17
  3. erreurs lecture fichier
    Par capucine1983 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 15/07/2007, 08h19
  4. Erreur lecture fichier avi
    Par ooyeah dans le forum Windows XP
    Réponses: 4
    Dernier message: 11/04/2007, 22h19
  5. Erreur à la lecture d'un fichier
    Par sebduth dans le forum Fortran
    Réponses: 3
    Dernier message: 26/08/2005, 16h30

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