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 :

Recupérer des données d'un fichier texte


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut Recupérer des données d'un fichier texte
    Bonjour,

    Comme énoncé dans le titre du topic, j'aimerais savoir comment peut-on en JAVA récupérer des données à partir d'un fichier texte (*.txt).

    Admettons le programme suivant :

    j'ai une variable (String) NombreArecuperer

    je souhaite tester cette variable avec une condition if ...

    Par exemple si cette variable NombreArecuperer est différente de 12 alors j'affiche "OK" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (NombreArecuperer != "12")
         return AFFICHAGE_OK;
    else
         return AFFICHAGE_NOK;
    Je souhaite qu'un utilisateur lambda puisse à partir d'un fichier texte (par exemple dans c:\fichier.txt) définir la variable NombreArecuperer simplement en écrivant un chiffre dedans.

    Nous aurons donc un fichier c:\fichier.txt qui contient un chiffre (12,11,1,8,....).

    Mon objectif est d'importer la valeur de ce chiffre dans la variable NombreArecuperer de mon programme JAVA.

    Si quelqu'un peut m'éclairer sur la façon de procéder pour réaliser cela je le remercie d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut
    Si j'ai bien compris ce que tu demandes, tu veux lire le chiffre qu'il y a dans le fichier et le mettre dans nombreArecuperer c'est bien sa?

    Dans ce cas fais:
    BufferedReader r = new BufferedReader(new FileReader("fichier.txt"));
    String val= r.readLine();
    NombreARecuperer = Integer.valueOf(val);

    Aprés ça dépend si il y a une seul valeur dans le fichier texte...

  3. #3
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Bonjour,

    simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    BufferedReader br=new BufferedReader(new FileReader(filePath));
    String line=br.readLine();
    int NombreArecuperer=-1;
    try
    	{
    	nombreArecupere=Integer.parseInt(line);
    	}
    catch(NumberFormatException e)
    	{
    	//pas un nombre.
    	}

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    oui c'est bien cela Anthony, merci je vais tester tout ça ...

  5. #5
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    @Anthony

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	BufferedReader r = new BufferedReader(new FileReader("/NombreARecuperer.txt"));
    	String val= r.readLine();
    	numberToRetrieve = Integer.valueOf(val);
    quand j'utilise le code suivant, j'ai une erreur de syntaxe ";" sur la ligne 2
    Erreur de syntaxe sur le sème ";", , attendu

    @unknow0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    	BufferedReader br=new BufferedReader(new FileReader("/NombreARecuperer.txt"));
    	String line=br.readLine();
    	int nombreArecuperer=-1;
    	try
    		{
    		nombreArecupere=Integer.parseInt(line);
    		}
    	catch(NumberFormatException e)
    		{
    		//pas un nombre.
    		}
     
    }
    j'ai une erreur sur la ligne 3 :"Plusieurs marqueurs sur cette ligne
    - Erreur de syntaxe sur le sème ";", { était attendu après
    ce sème
    - Champ SVIAccueil.nombreArecuperer en double"

    J'ai du oublier quelque chose mais quoi,merci...

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Woah. Là pour le coup il vaudrait mieux attacher le fichier entier.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    bien sûr :

    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
    import java.io.*;
     
    public class Test {
     
     
    	public static void main(String[] args) {
     
     
     
    	BufferedReader r = new BufferedReader(new FileReader("NombreARecuperer.txt"));
    	String val= r.readLine();
    	numberToRetrieve = Integer.valueOf(val);
     
    	System.out.println(numberToRetrieve);
     
    }
    }
    Voilà c'est un programme test bien sûr car il n'a aucun intérêt sinon

    je veux juste afficher la valeur de numberToRetrieve contenu dans un fichier nommé NombreARecuperer.txt

    EDIT : mon fichier se trouve dans C:\NombreARecuperer.txt

    l'erreur est désormais la suivante : numberToRetrieve ne peut pas être résolu

  8. #8
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Citation Envoyé par miniRoshan Voir le message
    EDIT : mon fichier se trouve dans C:\NombreARecuperer.txt

    l'erreur est désormais la suivante : numberToRetrieve ne peut pas être résolu
    et comme sa?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    BufferedReader r = new BufferedReader(new FileReader("c:\NombreARecuperer.txt"));
    int numberToRetrieve = Integer.valueOf(val);

  9. #9
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    Nop, j'ai déjà testé en mettant FileReader("c:\NombreARecuperer.txt") voici l'erreur générée:

    Séquence d'échappement non valide (les séquences valides sont \b \t \n \f \r \" \' \\ )

    une idée?

  10. #10
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Citation Envoyé par miniRoshan Voir le message
    Nop, j'ai déjà testé en mettant FileReader("c:\NombreARecuperer.txt") voici l'erreur générée:

    Séquence d'échappement non valide (les séquences valides sont \b \t \n \f \r \" \' \\ )

    une idée?
    a oui excuse moi il faut doubler le \ soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileReader("c:\\NombreARecuperer.txt")
    et n'oublie pas le "int" devant numberToRetrieve

  11. #11
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    Re, j'ai fais la modif mais toujours aucun résultat :

    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
    import java.io.*;
     
    public class Test {
    	
    	
    	public static void main(String[] args) {
    		
    		
    		
    	BufferedReader r = new BufferedReader(new FileReader("c:\\NombreARecuperer.txt"));
    	String val= r.readLine();
    	int numberToRetrieve = Integer.valueOf(val);
    	
    	System.out.println(numberToRetrieve);
     
    }
    }
    1ere erreur soulignée :

    Plusieurs marqueurs sur cette ligne
    - Type d'exception FileNotFoundException non géré
    - Séquence d'échappement non valide (les séquences valides sont \b \t \n \f \r \" \' \\ )

    2eme erreur soulignée :

    Type d'exception IOException non géré


    merci

  12. #12
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Citation Envoyé par miniRoshan Voir le message
    Plusieurs marqueurs sur cette ligne
    - Type d'exception FileNotFoundException non géré
    -Type d'exception IOException non géré
    les deux la c'est normal il faut soit entourer le code d'un try/catch soir declarer que le main peu les remonter.

    simple et bourain (mais bon c'est un main juste pour tester alors ..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void main(String arg[]) throws Exception

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut
    Salut,
    Pour l'erreur : Séquence d'échappement non valide (les séquences valides sont \b \t \n \f \r \" \' \\ )

    Tu as bien mis :
    new FileReader("c:\\NombreARecuperer.txt")).

    Sinon essaye aussi de tester ton programme en mettant le fichier NombreARecuperer.txt dans le même dossier que le Test.java et regarde si ça fonctionne (en mettant new FileReader("NombreARecuperer.txt")).

  14. #14
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    C'est exact l'exception est levée maintenant mais j'ai toujours le problème avec FileReader

    voici un extrait de la javadoc

    java.io.FileReader.FileReader(String fileName) throws FileNotFoundException

    FileReader
    public FileReader(String fileName)
    throws FileNotFoundException
    Creates a new FileReader, given the name of the file to read from.

    Parameters:
    fileName - the name of the file to read from
    Throws:
    FileNotFoundException - if the named file does not exist, is a directory rather than a regular file, or for some other reason cannot be opened for reading.

  15. #15
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    Citation Envoyé par AnthonyBOSS Voir le message
    Salut,
    Pour l'erreur : Séquence d'échappement non valide (les séquences valides sont \b \t \n \f \r \" \' \\ )

    Tu as bien mis :
    new FileReader("c:\\NombreARecuperer.txt")).

    Sinon essaye aussi de tester ton programme en mettant le fichier NombreARecuperer.txt dans le même dossier que le Test.java et regarde si ça fonctionne.

    oui j'ai bien mis le \\ je test ça .

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut
    Pense a mettre new FileReader("NombreARecuperer.txt"));
    à la place de new FileReader("c:\\NombreARecuperer.txt")); si ça ne fonctionne pas (avec NombreARecuperer dans le même dossier que Test.java).

  17. #17
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    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
    import java.io.*;
     
    public class Test {
     
     
    	public static void main(String[] args) throws Exception {
     
     
     
    	BufferedReader r = new BufferedReader(new FileReader("NombreARecuperer.txt"));
    	String val= r.readLine();
    	int numberToRetrieve = Integer.valueOf(val);
     
    	System.out.println(numberToRetrieve);
     
    }
    }
    J'ai placé NombreARecuperer.txt dans le même dossier que Test.java

    Mais j'ai toujours cette fichu erreur sous éclipse
    Séquence d'échappement non valide (les séquences valides sont \b \t \n \f \r \" \' \\ )

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 9
    Par défaut
    Ton erreur sous eclipse s'affiche quand tu lance le programme ou elle s'affiche en face de la ligne erroné dans le code?

  19. #19
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    en face de la ligne erronée (croix blanche dans un rond rouge)

    Voici le message d'erreur lors de la compilation :

    Exception in thread "main" java.io.FileNotFoundException: NombreARecuperer.txt (Le fichier spécifié est introuvable)
    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 Test.main(Test.java:10)

  20. #20
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 48
    Par défaut
    Miracle cela fonctionne avec FileReader("c:\\NombreARecuperer.txt"));

    j'ai replacé mon fichier dans c:\

    j'ai compilé, ... plus d'erreur et le résultat affichée est bien le nombre que j'ai rentré dans mon fichier texte

    merci a vous deux pour l'aide.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/05/2014, 13h09
  2. Extraire des donnés d'un fichier texte
    Par sadsad dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2006, 15h09
  3. Réponses: 2
    Dernier message: 16/01/2006, 19h34
  4. Réponses: 2
    Dernier message: 05/01/2006, 00h29
  5. Réponses: 3
    Dernier message: 22/02/2004, 20h09

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