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 :

Lecture d'un fichier et le mettre dans un tableau


Sujet :

Entrée/Sortie Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 53
    Par défaut Lecture d'un fichier et le mettre dans un tableau
    Bonjour
    ja veut lire un fichier .txt et mettre les lignes du fichier dans un tableu, chaque ligne du fichier dans une ligne du tableau.
    voici le code:
    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
    import java.io.*;
     
    public class ReadFile {
    	public static void main(String[] args){
    	    String tableau []=null ;
    	    String chaine="";
    		String fichier ="class.txt";
     
    		//lecture du fichier texte	
    		try{
    			InputStream ips=new FileInputStream(fichier); 
    			InputStreamReader ipsr=new InputStreamReader(ips);
    			BufferedReader br=new BufferedReader(ipsr);
    			String ligne;
    			for(int i=0;i<tableau.length;i++){
    			while ((ligne=br.readLine())!=null){
    				tableau[i]=ligne;
    				System.out.println(tableau);
     
    		    	}
    	    	}
    			br.close(); 
    			System.out.println("Le fichier " + fichier + " a été créé!");
    		}		
    		catch (Exception e){
    			System.out.println(e.toString());
    		}
    	}
    }
    mais il m'affiche une erreur java.lang.NullPointerException,je ne sais pas ou est l'erreur si vous pouvez m'aider a la determiner.
    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    bonjour,

    la variable tableau étant initialisée à null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String tableau []=null ;
    l'appel a cette variable génère logiquement un NullPointerException
    il faut donc initialiser le tableau !

  3. #3
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    tableau.length ????

    Tant que tu ne posteras pas la trace de l'erreur elle même on jouera aux devinettes ...

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 53
    Par défaut
    salut
    voici ce que j'ai changé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String [] tableau=new String[10];
    il ne m'affiche plus l'erreur précédente,il m'affiche maintenant:
    [Ljava.lang.String;@3e25a5

    plus de 10 fois (la taille du tableau)

  5. #5
    Membre chevronné Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Par défaut
    Citation Envoyé par midou84 Voir le message
    salut
    voici ce que j'ai changé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String [] tableau=new String[10];
    il ne m'affiche plus l'erreur précédente,il m'affiche maintenant:
    [Ljava.lang.String;@3e25a5

    plus de 10 fois (la taille du tableau)
    System.out.println(tableau [i] );

    Et pour info ton algo ne marchera pas ....
    Relis bien et tu verras que pour chaque ligne de tableau tu mets l'intégralité de ton fichier dedans (en effacant chaque ligne avant ...)

    Supprime la boucle for et incrémente le i dans le while ca sera deja un bon point....

  6. #6
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Si le principe est de mettre le fichier dans un tableau (sans connaitre le nombre de ligne) il faut à chaque nouvelle ligne lue ajouter un élément au tableau.

    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
     
    String[] tableau = new String[0]; //création d'un fichier vide
    try {
    	java.io.InputStream ips=new java.io.FileInputStream(fichier); 
    	java.io.InputStreamReader ipsr=new java.io.InputStreamReader(ips);
    	java.io.BufferedReader br=new java.io.BufferedReader(ipsr);
    	String ligne;
    	//parcour du fichier
    	while ((ligne=br.readLine())!=null){
        	    	String[] oldTableau = tableau;
        	    	int noligne = oldTableau.length;
        	    	tableau = new String[noligne+1]; //afin d'ajouter la ligne on augmente la capacité du tableau
        	    	System.arraycopy(oldTableau, 0, tableau,0, noligne);//on recopie le contenu de l'ancien tableau dans le nouveau
        	    	tableau[noligne] = ligne; //affectation de la ligne du fichier au dernier élément du tableau
    	}
    	br.close();
    }catch (Exception e){
    	System.out.println(e.toString());
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //pour vérifier on parcour le tableau pour reconstituer dans la console le fichier 
    for(int i = 0; i< tableau.length; i++) {
        System.out.println(tableau[i]);
    }

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 53
    Par défaut
    Merci pour vos réponses

  8. #8
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Citation Envoyé par midou84 Voir le message
    mais il m'affiche une erreur java.lang.NullPointerException,je ne sais pas ou est l'erreur si vous pouvez m'aider a la determiner.
    Merci d'avance
    Si, il te le dit. Une exception, sauf rarissimes cas, c'est circonstancié et localisée.

    La localisation renseigne sur la méthode impliquée et la ligne fautive.

    Apprend à décrypter les exceptions, crois-moi, cela te sera très utile par la suite.

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

Discussions similaires

  1. Lecture D'un fichier TXT et Remplir dans un tableau
    Par Maz85 dans le forum VBScript
    Réponses: 2
    Dernier message: 21/05/2013, 11h21
  2. Réponses: 11
    Dernier message: 29/05/2012, 11h46
  3. Réponses: 3
    Dernier message: 12/11/2009, 14h26
  4. Réponses: 6
    Dernier message: 07/03/2009, 19h23
  5. Réponses: 9
    Dernier message: 05/11/2007, 11h05

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