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 :

Pb de lecture d'un fichier texte


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Par défaut Pb de lecture d'un fichier texte
    Bonjour

    Comment lire un fichier texte qui comporte des lignes vides car la méthode readline() me retourne:
    java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    alors que la ligne suivante n'est pas vide.

    Merci d'avance

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Par défaut
    il faudrait que tu nous montre ton code car le parcour d'un fichier jusqu'a EOF ne doit pas fournir se type d'exception...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Par défaut
    Le voici
    merci pour la promptitude

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    public class Flux_1 {
     
    	public static void main(Statement stmt, String fichier, String[] val) {	
    		String nom_tbl = val[2];
    		String sep_chp = val[3];
    		String titre_col = val[4];
    		String def_tbl = val[6];
    		String[] num_chp = val[7].split("[|]");
    		Integer nb_chp = 0;
    		String sql = "";
    		String valeur = "";
    		StringBuffer sql0 = new StringBuffer();
    //System.out.println(val[8]);		
    		if(val[8].equals("no_concat"))
    			{
    			 try{stmt.execute("TRUNCATE TABLE `"+nom_tbl+"`");}catch(final SQLException e){}
    			 if(nom_tbl.equals("f_emat"))      {librairie.Init_tbl_import.f_emat(stmt);}
    			 if(nom_tbl.equals("f_matart"))    {librairie.Init_tbl_import.f_matart(stmt);}
    			 if(nom_tbl.equals("t_detdep"))    {librairie.Init_tbl_import.simat_it(stmt);}
    			 if(nom_tbl.equals("t_invgen"))    {librairie.Init_tbl_import.simat_it(stmt);}
    			 if(nom_tbl.equals("t_invgendet")) {librairie.Init_tbl_import.simat_it(stmt);}
    			 if(nom_tbl.equals("t_matnom"))    {librairie.Init_tbl_import.simat_it(stmt);}
    			 if(nom_tbl.equals("t_matref"))    {librairie.Init_tbl_import.simat_it(stmt);}
    			 if(nom_tbl.equals("compta"))      {librairie.Init_tbl_import.simat_it(stmt);}
    			 if(nom_tbl.equals("result_h"))    {librairie.Init_tbl_import.simat_it(stmt);}
    			}
    		try
    		   {InputStream ips=new FileInputStream(fichier);
    			InputStreamReader ipsr=new InputStreamReader(ips);
    			BufferedReader br=new BufferedReader(ipsr);
    			String ligne;
    			//lecture ligne à ligne
    			while ((ligne=br.readLine())!=null) 
    				{//nbre de colonnes dans le fichier importé
    				 if(ligne.split("["+sep_chp+"]").length > nb_chp){nb_chp = ligne.split("["+sep_chp+"]").length;}
    				 sql0 = new StringBuffer("INSERT INTO "+nom_tbl+" VALUES ( ");
    				 //découpage de la ligne suivant le séparateur SEP_CHP
    				 //si la ligne finit par le séparateur on ajoute " "
    				 if(ligne.substring(ligne.length()-1, ligne.length()).equals(sep_chp))ligne=ligne+" ";
    				 //découpage
    				 val = ligne.split("["+sep_chp+"]", 0);
    				 //si la taille de val < nb_chp -> ligne avec retour chariot on concatène avec la ligne suivante
    				 while(val.length<nb_chp)
    				 	{ligne += br.readLine();
    				 		 val = ligne.split("["+sep_chp+"]", 0);}
    				 //extraction et construction de la rqte d'insertion
    				 for(int i=0;i<num_chp.length;i++)
    				 	{valeur = val[Integer.parseInt(num_chp[i], 10)-1];
    //System.out.println(num_chp[i]+" - "+valeur);
    				 	 if(valeur.equals("")||valeur.equals(" ")){valeur = "NULL ,";}else{valeur = "'"+valeur+"' ,";}
    					 sql0 = sql0.append(valeur);}
    				 sql = sql0.substring(0, (sql0.length()-1))+")";
    				 //insertion
    				 try{stmt.execute(sql);}catch(final SQLException e){}
    System.out.println("Sql: "+sql);
    				 }
    			br.close();
    			}
    		catch (Exception e) {System.out.println("popo:"+e.toString());} 
    	}
    }

  4. #4
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    L'exception est levée sur quelle ligne ? ( je doute fortement que se soit sur le readline... )

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Par défaut
    sur la ligne qui suit el while

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while(val.length<nb_chp)
    				 	{ligne += br.readLine();
    				 		 val = ligne.split("["+sep_chp+"]", 0);}
    et les lignes lues sont de la forme:

    12545896;UTIL;19991201;347002;F;I;;00;N;;;VALISE;20;OUTILLAGE;;VALISE

    ;;;;0;;;M;;;;;;;;C;;;;;;#;

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu peux nous donner la stack complète de l'exception ?
    Au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    catch (Exception e) {System.out.println("popo:"+e.toString());}
    fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    catch (Exception e) {
    System.err.print("popo:");
    e.printStackTrace();
    System.err.println()
    }

  7. #7
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Tu es sûr que ton Exception est levée à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while ((ligne=br.readLine())!=null)
    ?

    Edit : tiens lol même réflexion que iohack ^^

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

Discussions similaires

  1. Lecture d'un fichier texte dans un projet TOMCAT
    Par brice_nice dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 03/07/2005, 15h04
  2. lecture d'un fichier texte
    Par benahpets dans le forum MFC
    Réponses: 5
    Dernier message: 22/06/2005, 11h50
  3. [C#] Lecture d'un fichier texte (farfelu)
    Par choas dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/04/2005, 14h33
  4. Lecture d'un fichier Texte
    Par jcharles dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/10/2004, 14h58
  5. Stockage de données & lecture d'un fichier texte
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 13/03/2004, 14h05

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