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 :

remplir tableaux à partir de fichier txt


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut remplir tableaux à partir de fichier txt
    j'accède a mon fichier txt et je lis les données. J'ai essayé de déclarer un tableaux string pour le remplir et utiliser les données stockées à partir du champ 3 mais j'ai quelques problèmes.

    Voici mon programme:

    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
    package pack;
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.LineNumberReader;
     
     
    public class LireUptime {
     
    	public static void main(String[] args) {
     
    	    String[] ch =new String[520];
    	    String h="";
    		String fichier ="who.txt";
    		int c=0;
    		     try{
     
    			InputStream ips=new FileInputStream(fichier); 
    			InputStreamReader ipsr=new InputStreamReader(ips);
    			BufferedReader br=new BufferedReader(ipsr);
    			LineNumberReader reader = new LineNumberReader(br);
     
     
    			for(int i=0;i<55;i++){
    					while ((ch[i]=br.readLine())!=null){
    					System.out.println(ch[i]);
    					c++;
    					}
    			}
    			br.close();
    			System.out.println(c);
    			for(int i=2;i<c;i++){System.out.println(ch[i]);}
    		}catch(Exception e){e.printStackTrace();}		
    }
    }
    et pour le résultat :
    2009-04-09
    09
    salam-laptop
    salam
    salam
    salam
    fin
    7
    null
    null
    null
    null
    null
    mon programme me retourne des résultat null
    merci d'avance

  2. #2
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    salut,

    je crois que le problème vient de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(int i=0;i<55;i++){
        while ((ch[i]=br.readLine())!=null){
            System.out.println(ch[i]);
            c++;
        }
    }
    si on prend par exp i = 0, remarques que tu boucle sur le fichier entier, et à chaque tour du while, tu écrases ch[0]

    je crois qu'il faudrait plutôt mettre ceci, sans le for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int c = 0;
    while ((ch[c] = br.readLine()) != null){
        System.out.println(ch[c]);
        c++;
    }

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Aussi, pourquoi declarer un tableau de n element, si tu ne connais meme pas le nombre de lignes contenues dans ton fichier?
    Au lieu d'un tableau, je te conseillerais d'utiliser un ArrayList pour garder les lignes contenues dans ton fichier.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    merci pour votre réponse et je voudrai savoir si vous pouvez me donner une idées pour utiliser ArrayList et merci.

  5. #5
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    regarde ici : http://fmora.developpez.com/tutoriel...oduction/#L3.2

    et pour ton code, tu remplaces le tableau de String par un ArrayList
    quelques remarques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InputStream ips=new FileInputStream(fichier);
    InputStreamReader ipsr=new InputStreamReader(ips);
    • tu peux directement utiliser un FileReader et le passer au BufferedReader, puisqu'il s'agit d'un flux de caractère
    • il est conseillé de fermer les flux dans le bloc finally


    voici ton code avec les modifications que j'ai cru nécessaire de faire
    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
     
    package pack;
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
     
     
    public class LireUptime {
     
        public static void main(String[] args) {
     
            ArrayList<String> lignes = new ArrayList<String>();
            String fichier ="who.txt";
            BufferedReader br = null;
            try {
                br=new BufferedReader(new FileReader(fichier));
                String ligne = "";      //variable qui contiendra la ligne actuelle du fichier
                while ((ligne = br.readLine()) != null){
                    lignes.add(ligne);
                }
                //nombre de lignes = taille de l'arraylist
                System.out.println("Nombre de lignes lues: " + lignes.size());
                for(int i=2; i < lignes.size(); i++) {
                    System.out.println(lignes.get(i));
                }
            } catch(Exception e) {
                e.printStackTrace();
            } finally {
                if (br != null)
                    try {
                        br.close();
                    } catch (IOException ioe) {
                        ioe.printStackTrace();
                    }
            }
        }
    }

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    je vous remercie pour ton aide tout va bien

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

Discussions similaires

  1. Creer tables à partir de fichiers txt externes
    Par pierre24 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 25/08/2008, 15h26
  2. Extraction de données à partir de fichiers txt
    Par rob408231 dans le forum MATLAB
    Réponses: 15
    Dernier message: 13/06/2008, 15h17
  3. remplir datagrid à partir de fichier xml
    Par wajdiisi2007 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 10/08/2007, 12h27
  4. fichier XML a partir de fichier TXT
    Par walid_i dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 21/05/2007, 17h45
  5. remplir des tables a partir de fichiers TXT
    Par jeremie dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/03/2004, 14h50

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