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 :

Stocker un fichier text dans un tableau de String


Sujet :

Entrée/Sortie Java

  1. #1
    Membre éclairé
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Points : 828
    Points
    828
    Par défaut Stocker un fichier text dans un tableau de String
    salut,
    je veux lire un fichier.txt et stocker ses valeurs dans un tableau....
    j'ai fait le code mais ca ne marche pas, l'affichage du tableau ne se fait pas, je ne trouve pas l'erreur..
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
     
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.LineNumberReader;
     
    public class Dnsdt {
    	InputStreamReader flog	= null;
    	LineNumberReader llog	= null;
    	public int tail;
     
     
     
    public int taille()
    {
    	try{ 
    		flog = new InputStreamReader(new FileInputStream("C:\\Users\\Marouene\\workspace\\Liste.txt") );
    		llog = new LineNumberReader(flog);
    		String myLine= null;
    		int tail=0;
    		while ((myLine = llog.readLine()) != null) { 
                        tail=tail+1;
                    }
    		System.out.println(tail);
     
            }catch (Exception e){
                   // --- Gestion erreur lecture du fichier (fichier non existant, illisible, etc.)
                   System.err.println("Error : "+e.getMessage());
            }
     
     
    	return tail;
     
    }
    public String[]  adresses(int taille1){
    final String adresse[]=new String[taille1] ;
    {
     
    		try{ 
    			flog = new InputStreamReader(new FileInputStream("C:\\Users\\Marouene\\workspace\\Liste.txt") );
    			llog = new LineNumberReader(flog);
    			String myLine= null;
     
    			int i=0;
    			while ((myLine = llog.readLine()) != null) { 
     
    	                      // --- Affichage de la ligne lu depuis le fichier 
    	                      adresse[i]=myLine;
    	                     i=i+1; 
    	                }
     
     
    	        }catch (Exception e){
    	               // --- Gestion erreur lecture du fichier (fichier non existant, illisible, etc.)
    	               System.err.println("Error a: "+e.getMessage());
    	        }
    		return adresse;
     
    }}
    	public static void main(String[] args) {
    Dnsdt dns= new Dnsdt();
    int tt =dns.taille();
    String[] lien = dns.adresses(tt);
    for (int i=0;i<lien.length;i++)
     
    {
    System.out.println(lien[i]);	
    }
    }
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Points : 852
    Points
    852
    Par défaut
    Bonjour,

    Excuse moi l'expression, mais c'est un peu le bordel... en passant, tu lis 2 fois le fichier, je vois pas l'intérêt.

    Enfin bref, le problème c'est que tu as une variable de classe tail, et tu en créer une autre du même nom que tu incrémentes, puis tu renvois celle de classe, qui vaut toujours 0 (enfin 0, on sait pas trop ce qu'elle vaut vu qu'elle n'est pas initialisée).

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Désolé mais le code est affreux et cumule un bon paquet d'erreur !!!

    • Des variables locales déclarées en attributs d'instances (flog, llog, et tail).
      Il faut toujours déclarés les variables dans le scope le plus petit possible. Il n'y a aucune raison d'utiliser des attributs pour cela !!!
    • Des variables locales qui cachent des attributs d'instances, (tail dans taille()).
    • Une gestion des exceptions totalement inutile.
      Si tu ne sais pas comment traiter une exception, le mieux est de la laisser remonter...
    • Une absence totale des fermetures de fichiers (de quoi planter un serveur )
    • Une double lecture du fichier !!!



    Alors que tout ceci se fait en quelques lignes en utilisant une ArrayList :
    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
    	public static List<String> adresses(String fileName) throws IOException {
     
    		// Note : on devrait spécifier le Charset !!!!
    		LineNumberReader reader = new LineNumberReader(
    				new InputStreamReader(new FileInputStream(fileName)));
    		try {
    			ArrayList<String> list = new ArrayList<String>();
    			String line;
    			while ( (line=reader.readLine()) != null) {
    				list.add(line);
    			}
    			list.trimToSize();
    			return list;
    		} finally {
    			reader.close();
    		}
    	}
    Et si tu veux vraiment avoir un tableau, il suffit de faire une conversion à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return list.toArray(new String[list.size()]);

    a++

  4. #4
    Membre à l'essai
    Profil pro
    Intégrateur Web
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Points : 20
    Points
    20
    Par défaut utilisation de cette fonction adresse()
    Bonjour,

    Je suis complètement novice sur ce type de syntaxe de programmation alors je vais poser une question évidente pour vous. Comment je fais pour récupérer le résultat de cette fonction adresse() ?

    Je voudrais en fait mettre dans le résultat de cette fonction le contenu d'un fichier sur un serveur web et ensuite présenter le contenu par un ListView.

    Sans doute que je fais beaucoup d'erreurs dans ma formulation, alors un peu d'indulgence et d'aide please !

    A +

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

Discussions similaires

  1. Stocker un fichier texte dans un tableau de String
    Par Daniel777 dans le forum Android
    Réponses: 6
    Dernier message: 23/06/2014, 08h59
  2. stocker le contenu d'un fichier texte dans un tableau
    Par sneb5757 dans le forum Débuter
    Réponses: 12
    Dernier message: 24/10/2008, 21h11
  3. Réponses: 8
    Dernier message: 06/08/2006, 15h11
  4. [Tableaux] Stocker un fichier texte dans un tableau
    Par clairette59 dans le forum Langage
    Réponses: 13
    Dernier message: 27/01/2006, 23h48
  5. Réponses: 5
    Dernier message: 15/05/2005, 08h51

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