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 :

Lire un fichier en Java


Sujet :

Entrée/Sortie Java

  1. #1
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut Lire un fichier en Java
    Bonsoir,

    voila plusieurs heures que je cherche désespérément sur internet le moyen de lire un fichier texte via une méthode, et que cette méthode me renvois la ligne du fichier, je suppose pour l'instant qu'il n'y a qu'une ligne dans le fichier.

    J'ai essayé plusieurs codes, où éclipse me donnais soit une erreur soit cela ne faisais pas ce que je voulais.

    Mon dernier code qui pourrais faire ce que je veux, n'a pas l'air de m'aimer :
    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
    public String ouvrir(String nomFichier) 
        { 
     
    		String temp=""; 
    		try 
    		{ 
    			DataInputStream fichier; 
    			fichier=new DataInputStream(new BufferedInputStream(new FileInputStream(nomFichier))); 
    			temp=fichier.readUTF(); 
    			System.out.println("temp = "+temp);
     
     
    			fichier.close(); 
    		} 
    		catch(Exception e) 
    		{ 
    			System.err.println("Message_erreur" ); 
    		} 
    		return temp;
        }
    Je retourne donc un string (enfin je voudrais) pour pouvoir le comparer ... (c'est en fait une sauvegarde a terme de la configuration des logiciels que j'ai créé).

    J'appelle la méthode comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String ligne = ouvrir("C:/essai.txt");
    Dans la console je peut lire j'utilise JRE 1.6.

    J'en appelle a votre salut...

    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Dans ton exception, peux tu mettre un e.printStackTrace(); ?

    Pour pouvoir savoir ce qui est levé et surtout pourquoi.

    Merci

    Fred

  3. #3
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Tu es sûr que ton fichier existe?

    Enfin comme le dit mavina, met un e.printStackTrace() dans ta clause catch et on saura plus.

  4. #4
    Membre habitué Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Points : 151
    Points
    151
    Par défaut lire un fichier en Java
    étant donnée que tu veux lire un fichier texte

    FileReader fichier = new FileReader(«monfichier.txt»);

    Il existe plusieurs méthodes de la classe FileReader qui permettent de lire un ou plusieurs caractères dans le flux. Toutes
    ces méthodes sont héritées de la classe Reader et peuvent toutes lever l'exception IOException.Une fois les traitements sur le flux terminés, il faut libérer les ressources qui lui sont allouées en utilisant la méthode
    close().

    OU bien tu utilise les flux de caractères tamponé

    Pour améliorer les performances des flux sur un fichier, la mise en tampon des données lues ou écrites permet de traiter
    un ensemble de caractères représentant une ligne plutôt que de traiter les données caractères par caractères. Le nombre
    d'opérations est ainsi réduit.
    Les classes BufferedReader et BufferedWriter permettent de gérer des flux de caractères tamponnés avec des fichiers.

    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
     
    import java.io.*;
    public class TestBufferedReader {
    protected String source;
    public TestBufferedReader(String source) {
    this.source = source;
    lecture();
    }
    public static void main(String args[]) {
    new TestBufferedReader("source.txt");
    }
    private void lecture() {
    try {
    String ligne ;
    BufferedReader fichier = new BufferedReader(new FileReader(source));
    while ((ligne = fichier.readLine()) != null) {
    System.out.println(ligne);
    }
    fichier.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

  5. #5
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par mavina Voir le message
    Salut,

    Dans ton exception, peux tu mettre un e.printStackTrace(); ?

    Pour pouvoir savoir ce qui est levé et surtout pourquoi.

    Merci

    Fred
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    java.io.EOFException
    	at java.io.DataInputStream.readFully(Unknown Source)
    	at java.io.DataInputStream.readUTF(Unknown Source)
    	at java.io.DataInputStream.readUTF(Unknown Source)
    	at gdppb.Gestion.ouvrir(Gestion.java:138)
    	at gdppb.Gestion.<init>(Gestion.java:31)
    	at gdppb.Gestion.main(Gestion.java:180)
    Message_erreur
    Citation Envoyé par 138
    temp=fichier.readUTF();
    Citation Envoyé par 31
    String ligne = ouvrir("C:/essai.txt");//lancement de la méthode ouvrir()
    Citation Envoyé par 180
    Gestion appli = new Gestion();//lancement du constructeur de la classe

  6. #6
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par fomazou Voir le message
    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
     
    import java.io.*;
    public class TestBufferedReader {
    protected String source;
    public TestBufferedReader(String source) {
    this.source = source;
    lecture();
    }
    public static void main(String args[]) {
    new TestBufferedReader("source.txt");
    }
    private void lecture() {
    try {
    String ligne ;
    BufferedReader fichier = new BufferedReader(new FileReader(source));
    while ((ligne = fichier.readLine()) != null) {
    System.out.println(ligne);
    }
    fichier.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    Merci mais je voudrais pas avoir une classe avec un main.
    Je voudrais seulement une méthode.

  7. #7
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par fomazou Voir le message
    étant donnée que tu veux lire un fichier texte

    FileReader fichier = new FileReader(«monfichier.txt»);

    Il existe plusieurs méthodes de la classe FileReader qui permettent de lire un ou plusieurs caractères dans le flux. Toutes
    ces méthodes sont héritées de la classe Reader et peuvent toutes lever l'exception IOException.Une fois les traitements sur le flux terminés, il faut libérer les ressources qui lui sont allouées en utilisant la méthode
    close().
    Ok pour File reader, mais je comprend pas l'expression, "lever l'exception".
    Try sert a faire un test, c'est ce que j'ai compris sur le net.
    Catch est la dans le cas ou ça marche pas, comme if else, sauf que le test, c'est l'exécution du code ?

  8. #8
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Oh la, je te conseille d'aller lire le tutoriel de Anis Frikha concernant les exceptions : http://anisfrikha.developpez.com/tut...va/exceptions/ pour comprendre ce que c'est et ce qu'il faut faire en cas d'exception.

    P.S. : l'exception levée signifie que tu essaie de lire un fichier (ou un flux en général) alors que tu as atteint la fin de celui ci, End Of File Exception.

    Cordialement

    Fred

  9. #9
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut
    Citation Envoyé par mavina Voir le message
    Oh la, je te conseille d'aller lire le tutoriel de Anis Frikha concernant les exceptions : http://anisfrikha.developpez.com/tut...va/exceptions/ pour comprendre ce que c'est et ce qu'il faut faire en cas d'exception.

    P.S. : l'exception levée signifie que tu essaie de lire un fichier (ou un flux en général) alors que tu as atteint la fin de celui ci, End Of File Exception.

    Cordialement

    Fred
    Merci, j'ai lu votre lien et il est plutôt instructif j'ai compris l'essentiel de try catch et finaly.
    Puis j'ai repiqué le code puis je l'ai modifié pour qu'il me fasse ce que je voulais pour l'instant :
    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 gdppb;
     
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
     
    public class FluxFichier {
     
        /** Crée une nouvelle instance de  FluxMajuscule */
        public FluxFichier() {
        }
     
        public String read(String fichier){
     
        	String forReturn = "";
        	try
            {
                BufferedReader br=new BufferedReader(new FileReader(fichier));
                try
                {
                    String ligne;
                    ligne=br.readLine();
                    forReturn = ligne;
                    //System.out.println(ligne);
                }
                finally
                {
                    br.close();
                }
            }
            catch(IOException ex)
            {
                ex.printStackTrace();
            }
            return forReturn;
        }
    }
    Merci a tous

  10. #10
    Débutant Avatar de miron
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    479
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 479
    Points : 291
    Points
    291
    Par défaut Mon fichier est sur le web
    Voila alors maintenant que j'arrive a lire un fichier en local et a en extraire les informations, je voudrais lire ce même fichier stocké sur le web.
    J'ai bêtement utilisé le code précédent en envoyant comme parametre l'adresse URL mais comme je m'y attendais cela ne marche pas, j'ai donc cherché sur le net des solutions.
    Je n'ai pas trouvé de chaussure a mon pied, et je viens donc solliciter votre aide.
    (j'ai trouvé ça mais ça ne ma pas vraiment aidé.)
    Merci d'avance.
    Au passage je met les quelques erreurs...
    Citation Envoyé par Console
    java.io.FileNotFoundException: http:\pierre.blache.free.fr\Config.txt (Syntaxe du nom de fichier, de répertoire ou de volume incorrecte)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileReader.<init>(Unknown Source)
    at gdppb.FluxFichier.read(FluxFichier.java:19)
    at gdppb.Gestion.actionPerformed(Gestion.java:181)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)
    at gdppb.Gestion.actionPerformed(Gestion.java:183)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)

Discussions similaires

  1. Lire un fichier avec Java
    Par sciencesinfo dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 19/09/2012, 14h53
  2. Lire un fichier XML : java.io.FileNotFoundException
    Par Yerffoj21 dans le forum Android
    Réponses: 15
    Dernier message: 08/03/2012, 22h18
  3. Lire un fichier en JAVA
    Par alvanoto dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 17/06/2010, 16h48
  4. [DOM] Lire un fichier simple XML en Java
    Par thomas.legoff dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2006, 16h51
  5. Réponses: 1
    Dernier message: 19/12/2005, 17h09

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