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

Collection et Stream Java Discussion :

[Débutant]pb de fichier - array index out of bounds exception


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut [Débutant]pb de fichier - array index out of bounds exception
    bjr/bsr
    Je suis bloqué dans une erreure, quand j'ai compilé un exemple, que j'ai trouvé dans un cours, dans la partie des fichiers.
    voilà le code, et le message d'erreure :
    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
    import java.io.*;
     
    public class TestFile_12 {
      protected String nomFichier ;
      protected File fichier;
     
      public TestFile_12(String nomFichier) {
        this.nomFichier = nomFichier;
        fichier = new File(nomFichier);
        traitement();
      }
     
      public static void main(String args[]) {
        new TestFile_12(args[0]);
      }
     
      private void traitement() {
     
        if (!fichier.exists()) { 
          System.out.println("le fichier "+nomFichier+"n'existe pas");
          System.exit(1);
        }      
     
        System.out.println(" Nom du fichier    : "+fichier.getName());
        System.out.println(" Chemin du fichier : "+fichier.getPath());
        System.out.println(" Chemin absolu     : "+fichier.getAbsolutePath());
        System.out.println(" Droit de lecture  : "+fichier.canRead()); 
        System.out.println(" Droite d'ecriture : "+fichier.canWrite());
     
        if (fichier.isDirectory() ) {
          System.out.println(" contenu du repertoire ");
          File fichiers[] = fichier.listFiles();
          for(int i = 0; i < fichiers.length; i++) {
     
          	if (fichiers[i].isDirectory()) 
          	  System.out.println("  ["+fichiers[i].getName()+"]");      	
          	else
          	  System.out.println("  "+fichiers[i].getName());
          }
        }     
      }			
    }


    j'ai même de spécifier l'emplacement du fichier, en modifiant dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
    public class TestFile_12 {
      protected String nomFichier = "C:/monfichier.dat";
      protected File fichier;
    ...
    mais ça marche toujours pas !
    Merci pour toute aide

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    L'erreur que tu obtiens ne vient pas de ton fichier, elle veut dire que tu accèdes à un index trop grand dans un tableau. Dans ton cas, je pense que ca vient très certainement de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new TestFile_12(args[0]);
    Es-tu sûr d'avoir passè un paramètre à ta méthode main ?

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Citation Envoyé par wichtounet
    L'erreur que tu obtiens ne vient pas de ton fichier, elle veut dire que tu accèdes à un index trop grand dans un tableau. Dans ton cas, je pense que ca vient très certainement de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new TestFile_12(args[0]);
    Es-tu sûr d'avoir passè un paramètre à ta méthode main ?
    +1
    en effet la trace de l'exception indique
    at TestFile_12.main(TestFile_12.java:14)
    anadeveloppeur je pense qu'en analysant un peu cette trace tu aurais pus trouvé l'erreur sans problème. En effet, tu as la méthode, le fichier et la ligne où ce trouve l'erreur (dans la méthode TestFile_12.main(), fichier TestFile_12.java ligne 14) ce qui correspond donc bien à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new TestFile_12(args[0]);
    Au vue de l'exception levée (ArrayIndexOutOfBound), l'erreur ne fait plus aucun doute .

    Lorsque tu utilise les paramètres passés à ton application, il est te faut d'abord tester si l'utilisateur à bien passé les paramètres voulus.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut
    Bjr, et merci bien pour votre aide.
    Moi aussi je m'en doutais de la méthode "TestFile_12.main()", d'abord puisque c'est trivial de l'avoir dans l'écran bleu, mais ce qui n'était pas trivial pr moi c'est comment se comporter avec, moi quand j'ai trouvé l'exemble ici : Exemple ( code Java 1.2 ), j'ai cru que ça va marcher spontanément, or peut être qu'il fallait ajouter des modications au code.
    Bon j'ai fais la modification suivante :
    en déclaration des attributs de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static protected String nomFichier = "C:/monfichier.dat";
    après avoir créé le fichier dans C:/
    et puis dans la méthode qui a générée l'erreure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      public static void main(String args[]) {
        new TestFile_12(nomFichier);
      }
    et ça a donné
    Mais je ne comprends pas la manière dont l'exemple a traité le problème, en plus je ne sais pas pkoi l'auteur a écris "args[0]" dans la méthode

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 943
    Points
    5 943
    Par défaut
    Le tableau args permet de récupérer les paramètres passer à l'application Java .
    Dans ton cas tu peus lancer ton application comme suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java Test_12 c:/monfichier.dat
    args[0] seras alors égal à "c:/monfichier.dat".

    Pour plus d'infos c'est dans la FAQ : Comment récupérer des paramètres d'une ligne de commande ?
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Membre habitué Avatar de TheBlue
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 167
    Points : 147
    Points
    147
    Par défaut
    OK c'est bon donc c'était juste manque d'informations, je ne faisait jamais attention à cette notion des paramètres dans la méthode main, puisqu'on la jamais cité dans la classe ...
    Merci pour vous tous, je vais chercher dans le FAQ
    Vive l'entraide et l'échange des informations

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

Discussions similaires

  1. Array index out of range: 0
    Par Morji2810 dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 02/08/2013, 11h09
  2. Réponses: 1
    Dernier message: 05/08/2008, 18h27
  3. Réponses: 15
    Dernier message: 31/03/2007, 16h32
  4. index out of bound
    Par toure32 dans le forum Delphi
    Réponses: 1
    Dernier message: 07/11/2006, 15h51
  5. [Struts]Bean populate & array index out of bound
    Par djoukit dans le forum Struts 1
    Réponses: 7
    Dernier message: 02/11/2006, 11h03

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