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

Java Discussion :

chargement fichier d'un fichier txt et utilisation de la methode split


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Points : 7
    Points
    7
    Par défaut chargement fichier d'un fichier txt et utilisation de la methode split
    Bonjour,
    j'utilise JDK1.7.

    j'ai des fichiers .txt fourni tel que par exemple (a l'affichage):

    OOOOO
    OOOOO
    OO.OO
    OOOOO

    et mon but est de charger ce fichier: c'est à dire remplir un tableau a double dimensions par exemple (String [][] t) tel que t[0][0].equals("O")==true; t[0][1].equals("O")==true; [...]; t[3][3].equals(".")==true; etc.

    Il apparait que seulement la 1ere ou la derniere ligne (je ne sais pas) est "chargee".




    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
    public void chargerFichier(String nom) {
    		String ligne = "";
    		String[] temp = new String[CONSTANTE_TAILLE_MAXIMUM_TABLEAU];//ça m'embete de proceder ainsi: on ne connait pas le nombre de ligne du fichier en entree 
    		String[] temp2 = new String[CONSTANTE_TAILLE_MAXIMUM_TABLEAU*CONSTANTE_TAILLE_MAXIMUM_TABLEAU];//meme remarque
     
    		try {
    			BufferedReader bfr = new BufferedReader(new FileReader(nom));
     
    			while ((ligne = bfr.readLine()) != null) {
    				temp = ligne.split("\n");//pour chaque indice dans temp[i] une chaine de caractere 
    			}
    			for (int j = 0; j < temp.length; j++) {
    				temp2 = temp[j].split("");//pour chaque indice un unique element de chaque chaine dans temp2[i] 
     
    				for (int l = 0; l < temp2.length; l++) {
    					this.tab[j][l] = temp2[l];//le but est de retablir le tableau a double entree (ainsi d'ecraser les valeurs ou non presentes), j est cense //changer a chaque iteration
    				}
    				temp2 = null;
    			}
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException ee) {
    			ee.printStackTrace();
    		}
    	}

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while ((ligne = bfr.readLine()) != null) {
       temp = ligne.split("\n");//pour chaque indice dans temp[i] une chaine de caractere 
    }
    Tu remplaces a chaque fois ton résultat au lieu de le stocker.
    temp doit etre une ArrayList<String[]>.

    Au passage, le nom des variables n'est pas tres judicieux. Et le temp = ligne.split("\n"); ne sert a rien puisqu'il est apres un bfr.readLine() qui lit deja les lignes 1 à 1.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    Pendant qu'on y est, on peut se demander l'intérêt de découper des Strings en plusieurs Strings de un caractère chacune.
    La structure de données devrait être List<String>, tout simplement.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci, la structure de donnée List<String> convient beaucoup mieux pour traiter ce problème. L'utilisation de "char" est elle aussi plus naturelle et pertinente.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 619
    Points
    21 619
    Par défaut
    List<List<Character>> c'est un peu lourdingue, je trouve.

    Et apparemment tu as besoin de List plutôt que de tableaux, si tu n'es pas sûr de la taille des données.

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

Discussions similaires

  1. Lecture fichier .txt et utilisation des données
    Par halloumiali dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 08/03/2012, 17h10
  2. Réponses: 4
    Dernier message: 13/12/2011, 16h42
  3. [CS4] Utilisation fichiers externes (XML et txt) et accents
    Par fidecourt dans le forum Flash
    Réponses: 2
    Dernier message: 05/10/2010, 14h53
  4. Réponses: 15
    Dernier message: 28/11/2008, 17h57
  5. lecture de fichiers txt et utilisation de boucles
    Par joboy84 dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2008, 12h24

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