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 :

Probleme avec FileInputStream et StringTokenizer


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 594
    Points
    594
    Par défaut Probleme avec FileInputStream et StringTokenizer
    Bonsoir,

    lorsque je veux compiler le programme suivant:

    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 Myclass
    {
     
    String ligneParse;
     
    public void methode2(String s)
    {
     ...
    }
     
    public void methode(String nomfichier)
    {
     
    		BufferedReader br=new BufferedReader(
             new InputStreamReader(
             new FileInputStream(nomFichier)));
     
     
         while ((ligneParse=br.readLine())!=null)
         {
         	methode2(ligneParse);
         }        
    }
    }
    le compilo me renvoie l'erreur suivante:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Myclass.java:186: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
             new FileInputStream(nomFichier)));
             ^
    Myclass.java:189: unreported exception java.io.IOException; must be caught or declared to be thrown
         while ((ligneParse=br.readLine())!=null)
                                       ^
    2 errors
    Est ce qqun pourrait m'aider à resoudre ce porbleme?
    Merci.

  2. #2
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    c naturelle parce que ton code peut provoquer une Exception donc il faut l'imbriquer avec try .. catch

    essaie ca

    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
    public Myclass
    {
     
    String ligneParse;
     
    public void methode2(String s)
    {
     ...
    }
     
    public void methode(String nomfichier)
    {
    		try
    {
    		BufferedReader br=new BufferedReader(
             new InputStreamReader(
             new FileInputStream(nomFichier)));
     
     
         while ((ligneParse=br.readLine())!=null)
         {
         	methode2(ligneParse);
         }        
    }catch(Exception e)
    {};
    }
    }
    j'espere que ca va t'aider

  3. #3
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 594
    Points
    594
    Par défaut
    Merci Selim,


    j'ai essayé et ça marche impec' sauf au lieu de mettre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    try{}
    catch(Exception e)
    j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    try{}
    catch(IOException e)
    Merci encore

  4. #4
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    content que ca a pu t'aidé
    +1 pour IOException

    a++

  5. #5
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 594
    Points
    594
    Par défaut STRINGTOKENIZER
    Rebonsoir,

    en fait j'ai un autre probleme mais la c'est avec la classe StringTokenizer, en utilisant la methode nextToken, le compilateur me renvoie une erreur à l'execution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Exception in thread "main" java.util.NoSuchElementException
            at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
            at Myclasse.parseLine(Profiling.java:86)
            at Myclasse.parseFile(Profiling.java:193)
            at Main.main(Main.java:6)
    et je comprends pas ce que je dois faire?
    Y'a t'il qqun pour m'apporter une fois de plus sont aide ?
    Merci par avance.

  6. #6
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    avant d'appler nextToken() tu dois d'abor verifié s'il ya un element avec hasMoreTokens()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
             StringTokenizer st = new StringTokenizer("this is a test");
             while (st.hasMoreTokens()) {
                 System.out.println(st.nextToken());
             }
    le code précedent donne comme resultat

    this
    is
    a
    test


    ps: la prochaine fois quand tu change de sujet, creer une nouvelle discussion c mieux comme ca ce qui auront besoin trouveront plus rapidement des problemes liés a leurs problemes

    +++

  7. #7
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 594
    Points
    594
    Par défaut
    Ben justement j'ai mis un while (st.hasMoreTokens()) avant de faire un nextToken().

    Pourquoi ça ne marche pas alors?

  8. #8
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    tu peu collé ton code ??

  9. #9
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 594
    Points
    594
    Par défaut
    Voila mon code enfin une version courte car si je te mets tout ça va prendre plus de 300lignes

    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
     
    class Test
    {
    ...
     
    public void parseLine(String ligne)
    {
     StringTokenizer st = new StringTokenizer(ligne);
     
     while (st.hasMoreTokens()) 
     {
      if(st.nextToken().equals("T1"))
      {
        t1.addLast(new T1());
        motParse=st.nextToken();
        t1.getLast().nomType=motParse;
     
        motParse=st.nextToken();
        t1.getLast().idType=Integer.parseInt(motParse);
      }
      else ...
      // plein de else et de if encore dans le meme style qu'un switch
     
     }
    }

  10. #10
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Points : 1 034
    Points
    1 034
    Par défaut
    motParse=st.nextToken();
    t1.getLast().nomType=motParse;

    motParse=st.nextToken();
    tu a appelé nextToken() deux fois la deusieme fois sans faire le test
    donc ....

  11. #11
    Membre confirmé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Points : 594
    Points
    594
    Par défaut
    Merci Selim,

    j'avais aussi capté mon ânerie. J'ai corrigé et ça marche bien maintenant.

    Merci pour ton aide

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

Discussions similaires

  1. probleme avec StringTokenizer
    Par ungasquipasse dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 24/12/2009, 15h22
  2. Probleme avec StringTokenizer
    Par LP-mpascolo dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2008, 09h24
  3. Problemes avec StringTokenizer
    Par michaelbob dans le forum Langage
    Réponses: 15
    Dernier message: 16/08/2006, 14h06
  4. [StringTokenizer] [delimiteur]Probleme avec le delimiteur!
    Par fabszn dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/05/2006, 17h49
  5. [stringtokenizer] probleme avec champs vides
    Par gege2mars dans le forum Langage
    Réponses: 9
    Dernier message: 30/06/2004, 08h25

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