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 :

Programme lire et ecrire fichier


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Points : 18
    Points
    18
    Par défaut Programme lire et ecrire fichier
    Bonjour, voila je suis debutant en java, et je me lance dans un exo qui a pour but de créer un fichier ou il y a une ligne de réels.
    Ensuite on doit faire un programme qui le lit et qui le transforme en un tableau de reel!
    J'ai commencer un programme pour lire le fichier mais ca ne compile pas:

    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
    import java.io.*;
    public class Lecture {
     
       public static void main (String args[])throws IOException {
            String fichier;
            string ligne;
            int n;
                    System.out.print("Donner le nom du fichier a liester:");
                    fichier=Clavier.lireString();
                    BufferedReader entree=new BufferedReader(new FileReader(fichier));
     
        do
            {ligne=entree.readLine();
            if(ligne!=null)System.out.println(ligne);
            }
            while (ligne!=null);
            entree.close();
            System.out.println("***fin liste fichier***");
        }
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Salut,

    regarde bien la ligne 6 de ton code (extrat les n° des lignes).
    Tu vois ce qui cloche ?

    Quand tu auras corrigé tu compileras et exécuteras et, à condition d'avoir la classe Clavier tu constateras que c'est OK.

    Mais:
    En fait, tu n'as pas à entrer le nom du fichier que tu viens de créer.
    À toi de voir comment "passer" le nom du fichier à cette classe lecture...
    Une piste: crée une méthode de cette lecture...

    Quant à la création du fichier voici un petit exemple de céation dun .txt:

    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
       import java.io.BufferedWriter; 
       import java.io.FileWriter; 
       import java.io.PrintWriter;
       // ou bien:
       // import java.io.*; //mais en détaillant on voit quelles classes on utilise
     
     
       public class EcrireFic
       { 
          public static void main(String[] args) //throws IOException
          { 
             PrintWriter fichier;
             try
             { 
                fichier = new PrintWriter(new BufferedWriter(new FileWriter("out.txt"))); 
                for(int i=0;i<23;i++) //on veut créer 22 lignes (0 à 22) dans out.txt
                {
                   fichier.println(i); 
                }
                fichier.close();
             }
                catch (Exception e)
                {
                   System.out.println(e.toString());
                }
          }
       }
    Attention:

    Ce n'est qu'un exemple le nom du fichier à créer est en dur et cette fois tu peux utiliser la classe Clavier.

    D'autre part ici on crée 23 lignes alors que tu veux une ligne de réels.

    Pour la création tu tableau un "split" de la ligne serait une solution...

    N'oublie pas que tu as une ligne de Strings.

    Cordialement,

    Dan

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Une petite remarque, pour ne pas faire d'erreurs à la compilation concernant des petites bourdes de syntaxe, utilise l'IDE Eclipse. Il devrait te permettre d'éviter ça.

    Mais je suis conscient qu'au début, son déploiement peut paraître lourd.

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    En fait même en corrigeant ca ne marche pas alors j'ai essayé autre chose:


    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
     
         public String readFile (String theFileName ){
              InputStreamReader flog	= null;
    	      LineNumberReader llog	= null;
    	      String myLine		     = null;
              String myConcatLines     = "";
    		String nextToken()
    		int countTokens()
    		boolean hasMoreTokens()
    	try{ 
    		flog = new InputStreamReader(new FileInputStream("path du fichier a remplacer") );
    		llog = new LineNumberReader(flog);
    		while ((myLine = llog.readLine()) != null) { 
                         // --- Ajout de la ligne au contenu
                          myConcatLines += myLine;
                   }
            }catch (Exception e){
                  // --- Gestion erreur lecture du fichier (fichier non existant, illisible, etc.)
                   System.err.println("Error : "+e.getMessage());
                   return null;
            }
            return myConcatLines;
     
    }
    Mon problème est maintenant est de construire un tableau pour intégrer les réels qu'il y a dans le fichier. Je suppose qu'il faudra transformer les string en int et il vaut mieux peut être mieux de remplir le tableau en même temps qu'on lit le fichier non?

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 6 887
    Points
    6 887
    Par défaut
    1. Utilises la balise CODE
    2. Fermes les flux après utilisation
    3. Laisses remonter les exceptions plutôt que les catcher et écrire un message d'erreur
    4. Si tu catches un exception, soit tu la remontes, soit tu en remontes une nouvelle en utilisant l'exception catchée, soit tu log la stacktrace.
    5. La méthode readLine() ne renvoie pas saut de ligne. Il faudrait en remettre un au moment de l'"expansion" de la variable "myConcatLines".
    6. Sinon tu peux te passer du point précédent et du LineNumberReader, en utilisant la méthode read(char[])
    7. Il vaut mieux utiliser des StringBuilder plutôt que concaténer des chaînes de caractères.


    Effectivement le plus intéressant c'est de transformer les lignes au fur et à mesure que tu les lis.
    Cependant tu as l'air débutant, donc le plus simple et le plus sage me paraît de lire le fichier dans une première étape. Et ensuite de parcourir les données chargées pour effectuer les transformations.
    Si tu dois traiter les informations ligne par ligne, renvoie plutôt une List<String> qu'une String.
    Si tu as des réels c'est plutôt le type double ou BigDecimal que tu dois utiliser ; tu as respectivement les méthodes Double.parseDouble(String) et BigDecimal(String).
    Il te faudra découper chaque ligne si tu as plusieurs valeurs par ligne.

  6. #6
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 48
    Points : 18
    Points
    18
    Par défaut
    Ok merci!!

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

Discussions similaires

  1. Lire ou ecrire fichier .ini
    Par Fred2209 dans le forum Visual C++
    Réponses: 4
    Dernier message: 26/12/2006, 18h57
  2. [VC++] creer, ecrire et lire dans des fichiers .ini
    Par ksoft dans le forum Visual C++
    Réponses: 11
    Dernier message: 06/09/2006, 11h18
  3. Language (non sur serveur) lire/ecrire fichier texte / BDD
    Par jorisvh dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 11/05/2006, 21h31
  4. Ecrire et lire dans un fichier texte
    Par podz dans le forum C
    Réponses: 3
    Dernier message: 25/10/2005, 17h57
  5. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 13h01

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