Classer fichier .txt dans tableau java

Rasta rockeuse Messages postés 4 Date d'inscription mercredi 16 novembre 2005 Statut Membre Dernière intervention 5 mai 2008 - 25 avril 2008 à 14:20
Rasta rockeuse Messages postés 4 Date d'inscription mercredi 16 novembre 2005 Statut Membre Dernière intervention 5 mai 2008 - 26 avril 2008 à 01:26
Bonjour à tous !


Comme indiqué, je me lance dans un programme sensé prendre les
données présentes dans un fichier texte et les classer dans un tableau.
Le fichier est de la forme :  

Donnée;Donnée;Donnée;Donnée


Donnée;Donnée;Donnée;Donnée


Donnée;Donnée;Donnée;Donnée


etc.


 

Mon code est le suivant : 

import java.io.*;

import java.util.*;


public class Algo_TP4 {


    public static void main(String[] args)throws IOException{


        /** Demande d'entrée du nom de fichier à l'utilisateur */

        Scanner clavier = new Scanner(System.in);

        System.out.println("Saisir le nom du fichier de données (avec son extension .txt) : ");

        String fil = clavier.next();

       

        try{

            FileReader lecteurDeFichier = new FileReader(fil);

            BufferedReader buff = new BufferedReader(lecteurDeFichier);

           

            System.out.println("Lecture du fichier : "+fil);


            /** Compte le nombre de données par ligne (= nombre de colonnes) */

            //System.out.println(buff.readLine());

            String premLigne = buff.readLine();

            /** Pour
séparer les données, on utilise le tokenizer avec pour délimiteur ";" */

            StringTokenizer st = new StringTokenizer(premLigne, ";");

           
System.out.println("Le fichier "+fil+" contient une liste avec les
donnees suivantes : ");

            int nbDonnees = 0;

            while(st.hasMoreTokens()){

                nbDonnees++;

                System.out.print(st.nextToken()+" ");

            }


                       

            /** Compte le nombre de lignes pour la création du tableau */

            int nbLignes = 1;

            while(buff.ready()){

                buff.readLine();

                nbLignes++;

            }


           

            /** Déclaration du tableau */

            String[][] tabDonnees = new String[nbLignes][nbDonnees];


            FileReader lec = new FileReader(fil);

            BufferedReader BF = new BufferedReader(lec);

           

            /** Rangement des données dans le tableau */

            while(BF.ready()){

                    String line = BF.readLine();

           
        StringTokenizer tok = new
StringTokenizer(line, ";");

           
        for(int i = 0; i<nbLignes;
i++){

           
            for(int j=0;
j<nbDonnees; j++){

           
           
    if(tok.hasMoreTokens()){

           
           
        tabDonnees[i][j]=tok.nextToken();

           
           
    }

                        }

                    }

            }//Fin while


        }//Fin try

       

        catch (IOException e){

            System.out.println("Erreur : "+e);

        }

    }//Fin main

}//Fin


Le problème est que je me retrouve avec la dernière ligne du texte dans mon tableau et toutes les autres cases sont null.


D'après ce que j'ai compris c'est parce qu'une fois mon fichier lu,
le second buffer ne me permet pas de revenir au début et reparcourir le
texte.


Est-ce que quelqu'un voit comment je pourrais faire ?


J'espère avoir été claire...


 

Merci d'avance  
Infernal telegraph to the hype

2 réponses

bensFouad Messages postés 39 Date d'inscription lundi 16 avril 2007 Statut Membre Dernière intervention 11 mai 2008
25 avril 2008 à 18:40
Salut,
les fichiers text en question, est ce qu'il existent déja ou bien tu utilise FileWriter et BufferedWriter pour les créer?
0
Rasta rockeuse Messages postés 4 Date d'inscription mercredi 16 novembre 2005 Statut Membre Dernière intervention 5 mai 2008
26 avril 2008 à 01:26
Salut et merci de t'intéresser à mon problème !

Le fichier .txt existe déjà. En fait, le but est de mettre son contenu
dans le tableau à deux dimensions et d'après utiliser un algorithme de
tri et de ressortir le tout dans un fichier xhtml.

Le fichier est de type :


Nom;Prénom;Année;e-mail

Martin;Pierre.1987;martin@partenaire.fr

Dupont;Jacques;1956;erto@mail.fr

etc.

Infernal telegraph to the hype
0
Rejoignez-nous