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 :

NoSuchElementException lecture fichier


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 439
    Par défaut NoSuchElementException lecture fichier
    Bonjour , voici le code de lecture de fichier.
    Je mets bien le fichier test.txt à la bonne place.

    Et pourtant j'ai une erreur exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    run:
    Exception in thread "main" java.util.NoSuchElementException
            at java.util.Scanner.throwFor(Scanner.java:838)
            at java.util.Scanner.next(Scanner.java:1347)
            at Main.processLine(Main.java:50)
            at Main.processLineByLine(Main.java:25)
            at Main.main(Main.java:8)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 0 seconds)

    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
    import java.io.*;
    import java.util.Scanner;
     
    public final class Main {
     
      public static void main(String... aArgs) throws FileNotFoundException {
        Main parser = new Main("C:\\Temp\\test.txt");
        parser.processLineByLine();
        log("Done.");
      }
     
      /**
      * @param aFileName full name of an existing, readable file.
      */
      public Main(String aFileName){
        fFile = new File(aFileName);
      }
     
      /** Template method that calls {@link #processLine(String)}.  */
      public final void processLineByLine() throws FileNotFoundException {
        Scanner scanner = new Scanner(fFile);
        try {
          //first use a Scanner to get each line
          while ( scanner.hasNextLine() ){
            processLine( scanner.nextLine() );
          }
        }
        finally {
          //ensure the underlying stream is always closed
          scanner.close();
        }
      }
     
      /**
      * Overridable method for processing lines in different ways.
      *
      * <P>This simple default implementation expects simple name-value pairs, separated by an
      * '=' sign. Examples of valid input :
      * <tt>height = 167cm</tt>
      * <tt>mass =  65kg</tt>
      * <tt>disposition =  "grumpy"</tt>
      * <tt>this is the name = this is the value</tt>
      */
      protected void processLine(String aLine){
        //use a second Scanner to parse the content of each line
        Scanner scanner = new Scanner(aLine);
        scanner.useDelimiter("=");
        if ( scanner.hasNext() ){
          String name = scanner.next();
          String value = scanner.next();
          log("Name is : " + quote(name.trim()) + ", and Value is : " + quote(value.trim()) );
        }
        else {
          log("Empty or invalid line. Unable to process.");
        }
        //(no need for finally here, since String is source)
        scanner.close();
      }
     
      // PRIVATE //
      private final File fFile;
     
      private static void log(Object aObject){
        System.out.println(String.valueOf(aObject));
      }
     
      private String quote(String aText){
        String QUOTE = "'";
        return QUOTE + aText + QUOTE;
      }
    }
    merci de votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu ne teste pas hasNext() avant de faire ton second appel à next(). Si il n'y a pas de = sur la ligne, tu n'aura donc qu'un seul élément dans ton Scanner.

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

Discussions similaires

  1. Lecture fichier Word et remplacement paramètre
    Par Pfeffer dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/02/2005, 17h30
  2. [ifstream] pb lecture fichier non sequentielle
    Par bludo dans le forum SL & STL
    Réponses: 3
    Dernier message: 10/02/2005, 21h30
  3. [LG]probleme lecture fichier
    Par yp036871 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2004, 19h22
  4. [LG]Probleme lecture fichier file of ....
    Par John_win dans le forum Langage
    Réponses: 11
    Dernier message: 11/11/2003, 18h53
  5. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08

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